温馨提示×

centos cpustat为何数据高

小樊
42
2026-08-30 14:36:14
栏目: 智能运维

cpustat 在 CentOS 上显示 CPU 使用率很高,通常有以下几类原因。这里按最常见 → 较少见给你系统排查思路,并给出对应命令。


一、最常见原因

1️⃣ 用户态进程占用 CPU(最常见)

比如:

  • Java / Python / PHP / Node 程序死循环
  • 编译任务(make、gcc)
  • 数据库(MySQL、PostgreSQL)高并发
  • Web 服务(nginx、httpd)流量暴涨

排查:

top
# 或
htop

看:

  • %us(user)是否很高
  • 哪个进程 PID 占 CPU 最多

进一步:

ps -p <PID> -o pid,ppid,cmd,%cpu

2️⃣ 内核态占用高(%sy 高)

说明 系统调用、中断、IO、网络 繁忙。

常见原因:

  • 高并发网络请求
  • 磁盘 IO 高
  • 大量短连接
  • 驱动或内核问题

排查:

vmstat 1
iostat -x 1
sar -n DEV 1

重点看:

  • system
  • iowait
  • 网卡流量

3️⃣ IO 等待高(%wa 高)

CPU 没干活,但在等磁盘。

典型场景:

  • 数据库大量随机 IO
  • 日志写入暴涨
  • 磁盘慢 / RAID 不健康

排查:

iostat -x 1

重点看:

  • %util 接近 100%
  • await / svctm

4️⃣ 中断过高(%irq / %soft 高)

一般由 网卡、磁盘、虚拟化 引起。

排查:

cat /proc/interrupts
mpstat -P ALL 1

常见:

  • 网卡队列不均衡
  • 虚拟机 vCPU 过多
  • 云服务器突发流量

二、cpustat 本身“看起来高”的原因

✅ 1️⃣ 采样时间太短

cpustat 默认是瞬时数据,容易误判。

✅ 建议:

cpustat 1 5

✅ 2️⃣ 多核 CPU 被平均

例如:

  • 1 个核 100%
  • 其他核 0%

整体看起来不算高,但单核已经打满

排查:

mpstat -P ALL 1

✅ 3️⃣ 虚拟机 / 云服务器超卖

云厂商:

  • CPU 是共享的
  • steal 时间高

重点看:

top

是否有:

%st (steal)

steal 高 = 宿主机抢资源


✅ 4️⃣ 频率调节导致误判

CPU 频率变化可能影响统计。

lscpu | grep MHz

CentOS 7 常见:

cpupower frequency-info

三、快速定位流程(推荐)

✅ 一键排查顺序

top
mpstat -P ALL 1
vmstat 1
iostat -x 1

然后问自己三个问题:

  1. 是 user 高还是 system 高?
  2. 是 CPU 忙还是 IO 忙?
  3. 是某一个进程还是整体?

四、我可以帮你精准分析

你可以直接把下面信息贴出来(脱敏即可):

  • top 前 20 行
  • mpstat -P ALL 1 3
  • vmstat 1 5
  • 物理机还是虚拟机
  • CentOS 版本(cat /etc/centos-release

我可以帮你直接判断是哪一类问题,以及要不要优化、怎么优化

0