温馨提示×

centos cpustat怎么排查故障

小樊
44
2026-09-03 04:13:30
栏目: 智能运维

在 CentOS 中排查故障,cpustat 通常不是系统默认自带工具,常见有两种情况:

  1. sysstat 包里的 mpstat / sar(很多人把 CPU 统计工具统称为 cpustat)
  2. perf-tools / pcstat / 或第三方 cpustat(如 cpustat by petermslater)

下面以最常用的排查思路给你一个实用指南,适用于 CentOS 7/8。


一、先确认你用的是哪个 cpustat

which cpustat
cpustat --help

如果没有:

yum install sysstat -y

然后用:

mpstat -P ALL 1
sar -u 1 5

二、用 cpustat / mpstat 看 CPU 瓶颈在哪

1️⃣ 看整体 CPU 使用率

mpstat 1

重点关注:

  • %usr 高 → 用户态程序(应用、Java、Python)
  • %sys 高 → 内核、驱动、IO
  • %iowait 高 → 磁盘瓶颈
  • %soft 高 → 软中断(网卡、锁)
  • %steal 高 → 虚拟机被宿主机抢资源

2️⃣ 看每个核

mpstat -P ALL 1

如果:

  • 单核 100%,其他空闲 → 程序没并行
  • 所有核都高 → 真负载高

三、结合进程找“罪魁祸首”

1️⃣ top / htop

top
# 按 P 按 CPU 排序

或:

htop

2️⃣ pidstat(非常关键)

pidstat -u 1
pidstat -u -p <PID> 1

看:

  • 哪个进程吃 CPU
  • 是用户态还是内核态

四、典型故障场景排查

✅ 场景 1:CPU 高但业务不忙

mpstat -P ALL 1
pidstat 1

可能原因:

  • 死循环
  • 频繁 GC(Java)
  • 锁竞争

✅ 场景 2:iowait 高

mpstat 1
iostat -x 1

重点:

  • %iowait > 20% 就有问题
  • await / util 高 → 磁盘慢

✅ 场景 3:软中断高

mpstat 1
cat /proc/softirqs

常见于:

  • 高网络流量
  • 网卡 RSS 不均

✅ 场景 4:steal 高(云服务器)

mpstat 1

%steal 高 → 宿主机超卖,找云厂商


五、进阶:用 perf 定位代码级热点(强烈推荐)

perf top
perf record -a 30
perf report

适合:

  • Java / C / Go 程序 CPU 异常

六、推荐排查组合(实战)

mpstat -P ALL 1
pidstat -u 1
top
iostat -x 1
perf top

七、如果你指的是某个具体 cpustat 工具

请告诉我:

  • cpustat 输出示例
  • CentOS 版本
  • 是物理机还是虚拟机
  • 故障现象(卡?慢?CPU 100%?)

我可以直接帮你对着输出分析

0