Linux Load 很高但 CPU 不高,问题可能在哪里?
Load Average 不等于 CPU 使用率。磁盘 IO、不可中断睡眠、进程排队和系统调用阻塞都可能导致 Load 升高。
很多新人看到 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 可以帮助判断进程卡在哪类内核等待上。
常见原因
- 磁盘故障或云盘抖动
- 日志写入过多
- 数据库刷盘压力
- NFS 或远程存储异常
- 备份任务和业务争抢 IO
- 容器共享宿主机 IO 导致互相影响
判断原则
Load 高不是结论,只是入口。要结合 CPU、IO、内存、进程状态和业务延迟一起看。真正的排查能力,是把一个数字拆成系统行为。
