centos cpustat 超时,通常不是 cpustat 本身卡死,而是它等待系统数据或 I/O 被阻塞。下面按常见原因给你系统性排查。
cpustat 不是 CentOS 自带命令,它通常来自 sysstat 包(如 mpstat / sar 系列),或者是 性能工具包(如 perf-tools、pcp、prometheus node_exporter)里的 cpustat。
不同来源的 cpustat 超时原因略有差异,但本质原因高度一致。
/proc 或 /sys 文件系统被阻塞(最常见)cpustat 本质是读取 /proc/stat、/proc/loadavg 等虚拟文件系统。
如果以下情况发生,就会“超时 / 卡住”:
# 看是否有 D 状态进程
ps -eo pid,state,cmd | awk '$2=="D"'
# 看系统负载
uptime
✅ 如果有大量 D 状态进程,不是 cpustat 的问题,是系统已经半死
cpustat 需要调度执行,调度不到就会“超时”。
top
vmstat 1
-c / 采样间隔过长例如:
cpustat 10 60
✅ 实际上是在 等待下一次采样
cpustat 1 3
在 Docker / Kubernetes / LXC 中常见:
/proc/stat 被限制cat /proc/stat
如果这也卡住,说明是 容器环境问题
老版本 CentOS 常见问题:
uname -r
dmesg | tail -50
如果看到:
hung_task_timeout_secsblocked for more than 120 seconds✅ 就是内核级阻塞
如果 cpustat:
而 NFS / 网络盘卡死,也会导致“超时”。
# 1. 是否 D 状态进程
ps -eo pid,state,cmd | grep D
# 2. 系统负载
uptime
# 3. 是否能正常读 /proc
time cat /proc/stat >/dev/null
# 4. cpustat 是否真的卡死
strace -c cpustat 1 1
# 5. 内核异常
dmesg | tail
可以改用:
top
vmstat 1
iostat -x 1
避免依赖单一工具。
cpustat 超时,99% 不是 cpustat 的问题,而是系统已经出现 I/O 阻塞、高负载或内核 hang。
如果你愿意,可以把下面信息发我,我可以精准判断是哪一类问题:
cat /etc/centos-release)uname -r)cpustat 的完整命令我可以直接帮你定位到根因 ✅