load-average-high

系统负载高但 CPU 不高的排查

现象

uptime 的 load average 很高,但 CPU 使用率不高,系统响应变慢。常见于 I/O 等待、内存回收或不可中断睡眠。

快速定位

uptime
vmstat 1 5
ps -eo state,pid,ppid,comm,wchan:32 | awk '$1 ~ /D/'
iostat -x 1 5
pidstat -d 1 5
cat /proc/pressure/io
cat /proc/pressure/cpu
cat /proc/pressure/memory

常见根因

  1. 大量进程处于 D 状态,等待磁盘、NFS 或网络存储。
  2. 磁盘 I/O 饱和、云盘限流或硬件故障。
  3. 内存不足触发直接回收,进程卡在分配内存。
  4. 内核锁竞争、文件系统或驱动问题。
  5. 容器/虚拟机层面 CPU steal 或宿主机过载。

修复

相关命令

读完自测

合上页面,先回答,再展开对照。

  1. load average 很高但 CPU 使用率不高,通常说明什么?
  2. 判断 I/O 瓶颈应看哪些指标?
  3. 如何定位卡住的进程和内核路径?
答案
  1. 通常是有大量进程处于 D 状态,在等磁盘、NFS 或网络存储。内存回收和不可中断睡眠也会造成这种现象。
  2. 看 vmstat 的 wa。再看 iostat -x 的 %util 和 await。
  3. 用 ps -eo state,pid,comm,wchan 过滤 D 状态进程并看 wchan。同时检查 dmesg 是否有 I/O error、hung task 或 NFS timeout。