📢 欢迎来到万事技术论坛!本站仅讨论合法编程技术话题,严禁外挂/作弊/黑产/盗版内容,违者封号。

精华服务器负载飙高排查套路:从 load 到具体进程

ops_wang 进阶会员

先搞懂 load 是什么

load average 是可运行 + 不可中断睡眠的进程数。
注意:它不等于 CPU 使用率。

  • load 高、CPU 高 → 真在算,找耗 CPU 的进程
  • load 高、CPU 低 → 大概率在等 IO,查 %wa

一套固定动作

uptime                 # 看 load 和趋势
top                    # 看 %us %sy %wa %id;按 P 排 CPU,按 M 排内存
iostat -x 1            # %util 接近 100 说明磁盘打满
vmstat 1               # r 列排队数、b 列阻塞数
pidstat -u -p ALL 1    # 精确到进程

定位到进程之后

ps -eo pid,ppid,stat,etime,cmd | grep <pid>
cat /proc/<pid>/status

Java 进程直接 jstack 抓线程栈,看是不是死循环或频繁 GC。

常见元凶

  1. 慢 SQL 把磁盘打满(%wa 高)
  2. 日志没做轮转,磁盘写满
  3. 死循环 / 正则回溯
  4. 连接泄漏导致线程数暴涨

建议先跑一下 dmesg | tail:如果是 OOM Killer 杀过进程,前面查半天都白查。

楼主 · 2026-09-28 14:31 · 浏览 3
dba_zhou 进阶会员

「load 不等于 CPU 使用率」这点太关键了。我们之前 load 20 但 CPU 才 30%,
一直查 CPU 查不出,最后 iostat 一看是磁盘 %util 100%,慢 SQL 拖的。

1楼 · 2026-09-28 14:31
登录 后即可参与回复。