news 2026/5/3 6:41:09

<span class=“js_title_inner“>建议收藏 | 拒绝背锅!Linux服务器性能排查“急救”指南</span>

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
<span class=“js_title_inner“>建议收藏 | 拒绝背锅!Linux服务器性能排查“急救”指南</span>

凌晨3点,报警群响了。老板问:“服务器怎么挂了?” 开发说:“代码没动过。” 运维说:“资源看着还行啊。”

作为技术人,遇到性能问题最忌讳乱猜

🚑 01. 全景问诊:系统负载 (top)

先看一眼“生命体征”。输入top,重点看前五行。

💻 终端真实回显

top - 14:28:14 up 100 days, 3:30, 2 users, load average: 5.15, 4.05, 2.50 Tasks: 201 total, 2 running, 199 sleeping, 0 stopped, 0 zombie %Cpu(s): 15.2 us, 5.1 sy, 0.0 ni, 45.5 id, 33.9 wa, 0.0 hi, 0.3 si MiB Mem : 15886.0 total, 2510.5 free, 8213.2 used, 5162.3 buff/cache MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 7125.0 avail Mem

🧐 核心指标解读

  1. **Load Average (平均负载)**:

  • 看哪里:第一行5.15, 4.05, 2.50(分别代表1、5、15分钟)。

  • 诊断:假设这是一台4核服务器,现在负载是5.15,说明有进程在排队,系统超载了。

  • **%Cpu(s) (CPU状态)**:

    • **us (user)**:15.2% —— 用户进程消耗,不高。

    • wa (wait)33.9% —— 警报!这个值高,说明CPU大量时间在等待磁盘I/O

    • 结论:大概率不是CPU算不过来,而是磁盘太慢拖累了CPU。


    🧠 02. 深度分析:CPU排查 (vmstat)

    如果top看不出所以然,或者你想知道更深层的瓶颈,用vmstat

    💻 终端真实回显

    输入vmstat 1(每秒刷新一次):

    procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 6 0 0 251014 120560 516230 0 0 0 40 1205 3452 85 10 5 0 0 7 0 0 250980 120560 516230 0 0 0 0 1340 5102 90 9 1 0 0

    🧐 核心指标解读

    • **r (running)**:

      • 数值:6, 7。

      • 诊断:正在运行或等待CPU的进程数。如果你只有4核,但这里长期显示 >4,说明CPU算力严重不足

    • **b (blocked)**:

      • 数值:0。

      • 诊断:处于不可中断睡眠(通常在等IO)的进程。如果这里有值,通常伴随着磁盘卡顿。

    • **us (user)**:

      • 数值:85%, 90%。

      • 诊断:用户态占用极高,这次确实是应用程序(如Java、Python)在疯狂计算。


    💾 03. 拒绝误判:内存排查 (free)

    新手最容易被“内存使用率”吓到。

    💻 终端真实回显

    输入free -h

    total used free shared buff/cache available Mem: 15Gi 4.2Gi 2.5Gi 1.0Gi 8.8Gi 10Gi Swap: 2.0Gi 0B 2.0Gi

    🧐 核心指标解读

    • **used (已用)**:4.2Gi。

    • **buff/cache (缓存)**:8.8Gi ——注意!这是Linux为了加速把文件读到了内存里,不是内存泄漏。

    • available (可用)10Gi——只看这个!

      • 诊断:只要available还很大,说明内存非常健康。千万不要看到used加上buff/cache快满了就去重启服务。


    💿 04. 抓包现行:磁盘I/O (iostat)

    刚才在top里看到wa很高?来实锤一下。

    💻 终端真实回显

    输入iostat -xz 1

    Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm %util await svctm vda 0.00 450.00 0.00 12500.00 0.00 0.00 0.00 0.00 99.5 12.5 2.10 scd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

    🧐 核心指标解读

    • %util99.5

      • 诊断:磁盘已经满负荷运转了(接近100%)。此时任何新的读写请求都会排队,导致系统卡顿。

    • await12.5(毫秒)。

      • 诊断:这是IO请求的平均等待时间。如果是SSD,这个值应该在1-2ms以内;如果是机械盘,超过10ms也说明很慢了。

    谁在写磁盘?此时可以使用iotop -o命令,它能像top一样列出是哪个进程(PID)在疯狂读写。


    📡 05. 现代网络:端口与连接 (ss)

    查看端口占用,别再用慢吞吞的netstat了,现代 Linux 推荐用ss

    💻 终端真实回显

    输入ss -lntp(查看监听端口):

    State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3)) LISTEN 0 100 *:8080 *:* users:(("java",pid=2561,fd=10)) LISTEN 0 50 *:3306 *:* users:(("mysqld",pid=1890,fd=15))

    🧐 核心指标解读

    • Recv-Q / Send-Q

      • 诊断:在LISTEN状态下,如果Recv-Q(当前全连接队列长度)超过了Send-Q(最大队列长度),说明连接队列满了,新的请求会被拒绝。这通常是并发太高,服务处理不过来了。

    • Process

      • 可以直接看到是java还是mysqld在占端口,以及它们的 PID。


    📝 总结:急救小抄

    遇到问题不要慌,按这个顺序把脉:

    1. top👉 负载高吗?是 CPU 忙(us高)还是磁盘忙(wa高)?

    2. vmstat 1👉 运行队列r是否堵塞?

    3. free -h👉 别管used,只看available够不够。

    4. iostat -xz 1👉%util是不是飙到了 100%?

    💡 避坑指南

    • 不要随意执行echo 3 > /proc/sys/vm/drop_caches清理缓存,这会导致系统为了重建缓存而引发IO风暴,让卡顿雪上加霜。


    本文内容经过实战验证,建议转发收藏,以备不时之需!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/3 4:45:33

高压直流输电在线监测Matlab仿真模型及GUI界面设置参数设计

高压直流输电在线监测Matlab仿真模型 本设计对故障监测,同时设置了GUI界面,可以设置参数等等一、系统概述 本高压直流输电系统在线监测控制系统以CIGRE HVDC标准测试系统为核心载体,依托MATLAB/Simulink仿真平台构建电磁暂态仿真模型&#x…

作者头像 李华
网站建设 2026/4/27 18:34:05

2026大厂最新Java高并发系统设计实录

为什么人人都想要获得高并发经验;想拥有高并发系统设计技能? 其原因LZ认为主要有以下三点: 涨薪:有高并发系统设计的技能后可以获得更加可观的收入。 晋升:高并发系统设计是一个初中级开发晋升成为一个高开乃至系统架…

作者头像 李华
网站建设 2026/4/23 6:54:02

MySQL索引原理:B+树与聚簇索引

好题目,这个是 MySQL 性能优化的核心基础 👍 我用 “原理 → 结构 → 工作方式 → 对比 → 常见面试点” 的顺序,帮你把 B 树 和 聚簇索引 一次讲透。 一、为什么 MySQL 需要索引? 👉 本质一句话: 减少磁盘…

作者头像 李华
网站建设 2026/4/19 17:10:06

SQL窗口函数实践笔记

好,这个题目非常偏“进阶 SQL 面试/实战”,我就直接给你一份能抄走用、也能讲给面试官听的《SQL 窗口函数实践笔记》。 不灌水,**以“为什么 → 怎么写 → 什么时候用”**为主。 SQL 窗口函数实践笔记(Window Functions&#xff…

作者头像 李华
网站建设 2026/5/1 18:18:42

医疗器械有源加速老化验证

有源加速老化,是指通过在实验室环境中施加高于正常使用条件的加速应力,在较短的时间内模拟产品在正常储存和使用条件下数年的老化过程,在评估性能的可靠性、功能稳定性和安全性是否满足设计预期。当前,医疗器械有源加速老化国内外…

作者头像 李华