技术博客

Linux Load 很高但 CPU 不高,问题可能在哪里?

Load Average 不等于 CPU 使用率。磁盘 IO、不可中断睡眠、进程排队和系统调用阻塞都可能导致 Load 升高。

Load AverageLinux性能iowait故障排查

很多新人看到 Load Average 高,就认为 CPU 打满了。但 Linux 的 Load 包含正在运行和不可中断睡眠状态的任务。也就是说,CPU 不高,Load 仍然可能很高。

典型场景是磁盘 IO 慢、网络文件系统卡住、块设备异常或大量进程等待资源。

先看整体

uptime
top
vmstat 1

top 看 CPU 使用率和 load,vmstat 看 run queue、blocked、iowait、context switch。b 列高,通常说明有进程阻塞。

看磁盘

iostat -xz 1

重点看 await、util、r/s、w/s。如果磁盘延迟很高,应用线程可能大量等待 IO,导致 Load 升高。

看进程状态

ps -eo state,pid,ppid,comm,wchan:32 --sort=state

D 状态表示不可中断睡眠,常见于等待 IO。wchan 可以帮助判断进程卡在哪类内核等待上。

常见原因

判断原则

Load 高不是结论,只是入口。要结合 CPU、IO、内存、进程状态和业务延迟一起看。真正的排查能力,是把一个数字拆成系统行为。

参考资料