Linux高负载如何排查_操作步骤详解提升实战能力【指导】

3次阅读

linux负载高需先结合 CPU 核心数判断是否真超标,再通过 top 查 %Cpu(s)、r/ b 值及进程排序定位瓶颈类型,最后用 perf、iostat、free 等 工具 深入分析根因。

Linux 高负载如何排查_操作步骤详解提升实战能力【指导】

linux 系统 负载高,不能只盯着 load average 数字猛看。关键要分清:是 CPU 真忙?还是进程在等磁盘或网络?又或者内存吃紧导致频繁换页?排查得有顺序、有重点、有依据。

先确认负载是否真超标

别一看到 load 5 就慌。得结合 CPU 核心数判断:

  • 运行 nprocgrep -c 'processor' /proc/cpuinfo 查清当前有多少逻辑 CPU
  • uptimecat /proc/loadavg 看三个值(1/5/15 分钟)
  • 如果 1 分钟负载 ÷ CPU 核数 > 1,说明当前队列已积压;> 0.7 就该关注了

快速定位瓶颈类型

打开 top,第一眼盯三处:

  • 右上角 %Cpu(s):看 us(用户态)和 sy(内核态)是否持续高于 70%;若 wa(IO wait)> 20%,大概率是磁盘卡住
  • 中间 rb(按 1 键可展开):r 值长期大于 CPU 核数 → CPU 队列满;b > 0 → 有进程在不可中断睡眠(常因 IO)
  • 进程列表:按 P 按 CPU 排序,按 M 按内存排序,一眼揪出“带头大哥”

按方向深入查具体原因

根据上一步线索,选对应命令深挖:

  • CPU 高但 wa 很低 :用 perf top -p PIDstrace -p PID 看进程到底在执行什么系统调用或 热点 函数
  • wa 高或 b 值不为 0:跑 iostat -x 1 5%utilawait;再用 iotop 找出真正刷盘的进程
  • 内存紧张迹象free -havailable 是否极少;cat /proc/meminfo | grep -E "Swap|Oom" 看是否在疯狂换页或触发 OOM
  • 网络相关负载ss -s 看连接总数和状态分布;netstat -s | grep -i "retransmit|drop" 查重传或丢包异常

java 类应用特别提醒

如果高负载进程是 Java 应用,别只停在 top 层面:

  • top -Hp PID 找出最耗 CPU 的 线程 ID(TID)
  • 转成十六进制:printf "%xn" TID
  • jstack PID | grep -A10 HEX_TID 定位线程 ,看是不是死 循环、锁竞争或 Full GC 频繁
  • 辅以 jstat -gcutil PID 1000 观察 GC 频率和耗时

基本上就这些。顺序别乱:看负载 → 看 top 总体指标 → 分方向查 → 锁定进程 → 深挖根因。不复杂但容易忽略的是——别跳过 CPU 核数这个分母,也别把 load 高直接等同于 CPU 高。

站长
版权声明:本站原创文章,由 站长 2025-12-20发表,共计1016字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
1a44ec70fbfb7ca70432d56d3e5ef742
text=ZqhQzanResources