先搞懂 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。
常见元凶
- 慢 SQL 把磁盘打满(
%wa高) - 日志没做轮转,磁盘写满
- 死循环 / 正则回溯
- 连接泄漏导致线程数暴涨
建议先跑一下
dmesg | tail:如果是 OOM Killer 杀过进程,前面查半天都白查。
楼主 · 2026-09-28 14:31 · 浏览 3

