温馨提示×

centos cpustat为何掉线

小樊
35
2026-07-20 21:35:27
栏目: 智能运维

在 CentOS 上 cpustat 掉线/中断/不再输出,通常不是“cpustat 本身坏了”,而是运行环境、采样方式或系统状态导致的。下面按最常见原因 → 排查方法 → 解决办法给你一个系统性的说明。


一、先确认:你说的“掉线”是哪种情况?

请先对号入座:

  1. cpustat 启动后运行一段时间就退出了
  2. cpustat 还在运行,但不再刷新输出
  3. SSH 一断,cpustat 就没了
  4. 运行几秒/几分钟就卡死
  5. 系统负载高时 cpustat 消失

不同情况原因不同。


二、最常见原因(90% 都在这里)

1️⃣ 你用的是 sysstat 里的 mpstat / sar,而不是 cpustat?

很多人把 mpstat 当成 cpustat

CentOS 默认 没有 cpustat 命令,常见来源:

工具 来源
mpstat sysstat
sar sysstat
cpustat 第三方工具(如 cpustat by Thomas Habets)

✅ 检查:

which cpustat
rpm -qf $(which cpustat)

2️⃣ SSH 断开导致 cpustat 退出(最常见)

如果你是:

ssh user@centos
cpustat

SSH 断开 = 进程收到 SIGHUP = 退出

✅ 解决方式:

✅ 方案 1:用 screen

yum install -y screen
screen
cpustat
# Ctrl+A D 离开

✅ 方案 2:用 tmux

yum install -y tmux
tmux
cpustat

✅ 方案 3:用 nohup

nohup cpustat > cpu.log 2>&1 &

3️⃣ cpustat 被 OOM Killer 杀掉(内存不足)

系统内存不足时 OOM Killer 会直接杀进程

✅ 检查:

dmesg | egrep -i "oom|kill"
journalctl -k | grep -i oom

✅ 表现:

  • cpustat 突然消失
  • 没有其他报错
  • 系统负载较高

✅ 解决:

  • 减少采样频率
  • 限制后台任务
  • 增加内存 / swap

4️⃣ cpustat 采样间隔 + 系统卡顿导致“假死”

某些 cpustat 实现是:

sleep(interval)

如果系统 负载极高 / IO 卡死 / NUMA 抖动,可能表现为:

  • 不再刷新
  • 看起来像“掉线”

✅ 排查:

top
vmstat 1
iostat -x 1

5️⃣ 内核 / proc 异常(极端情况)

cpustat 本质读的是:

/proc/stat

✅ 测试:

watch -n1 "cat /proc/stat | head"

如果这里都卡,说明不是 cpustat 问题,而是:

  • 内核 bug
  • 虚拟化异常(VMware / KVM / 云厂商)

三、如果你用的是 第三方 cpustat

例如:

github.com/pehringer/cpustat

常见问题:

原因 说明
Go 程序被 kill OOM
没加 -i 默认只跑一次
终端关闭 进程退出
权限不足 某些 cgroup 读不到

✅ 建议用法:

nohup ./cpustat -i 1 > cpu.log 2>&1 &

四、快速自检清单(照着做)

# 1. 是否还在运行
ps -ef | grep cpustat

# 2. 是否被 kill
dmesg | tail -50

# 3. 是否 SSH 导致
tmux

# 4. 是否是 mpstat
mpstat 1

# 5. 系统是否卡
top

五、我可以直接帮你定位(推荐)

你可以直接把下面信息贴出来,我可以精确判断

  1. CentOS 版本:
cat /etc/centos-release
uname -r
  1. cpustat 来源:
which cpustat
cpustat --help
  1. 掉线时的现象(截图或文字)

  2. 是否云服务器 / 虚拟机 / 物理机


✅ 总结一句话

CentOS 上 cpustat “掉线”,90% 是 SSH 断开或被 OOM 杀掉,不是 cpustat 本身的问题。

如果你告诉我你用的是 哪个 cpustat,我可以给你最合适的使用方式

0