小易说IT 小易说IT

服务器 CPU 监控完整示例命令

下面分Linux(最常用)、Windows,从命令行实时查看、持久化监控、告警、CPU 指标解读,适合运维 / 开发日常排查和线上监控。

一、Linux 服务器 CPU 监控

1. 即时查看(内置命令,无需安装)

top

top
  • 1:展开多核 CPU,看每个核心占用

  • 字段含义:

    • us:用户态 CPU(应用程序,Java/Go 等)

    • sy:内核态 CPU(系统调用、磁盘网络)

    • id:空闲 CPU,id + us + sy ≈100%

    • wa:IO 等待(重点!CPU 空闲但在等磁盘,不是 CPU 瓶颈)

    • hi:硬中断;si:软中断

  • P:按 CPU 占用排序;q退出

htop(美化版 top,需要安装)

# Debian/Ubuntu
apt install htop
# CentOS/RHEL
yum install htop

彩色界面,鼠标操作,多核一目了然。

uptime

快速看负载(1/5/15 分钟平均负载)

uptime
# 例:load average: 2.3, 1.8, 1.5

负载解读:CPU 核数 N,负载接近 N 表示 CPU 打满;大于 N 代表进程排队等待 CPU。 ⚠️ 负载高 ≠ CPU 使用率高,wa 高也会拉高负载。

mpstat(看多核 CPU 细分统计)

# 每2秒输出一次,持续输出
mpstat -P ALL 2

适合定位是不是单个核心跑满(单核瓶颈)。

pidstat(看单个进程 CPU)

# 每2秒输出进程CPU
pidstat -u 2

2. 持久化采集(保存历史数据,推荐生产)

sar(系统自带,历史回放)

# 每2秒采集一次,采集5次
sar -u 2 5
# 查看历史sar日志(一般在 /var/log/sa/)
sar -u -f /var/log/sa/sa20

注意:部分系统默认没开启 sar 日志,需要安装 sysstat 并配置开机自启。

主流监控套件(生产环境)

  1. Prometheus + Grafana + node-exporter(最流行) node-exporter 采集服务器 CPU、负载、中断等指标,Prometheus 存储,Grafana 出大盘,配置告警。 核心指标:

    • node_cpu_seconds_total:CPU 各模式时间,用来计算使用率

    • node_load1/node_load5/node_load15:系统负载

  2. Zabbix:传统运维监控,开箱自带 CPU 模板、邮件 / 钉钉告警

  3. Netdata:轻量,网页实时大盘,一键安装,适合快速临时监控

二、Windows 服务器 CPU 监控

1. 图形界面

  • 任务管理器 Ctrl+Shift+Esc → 性能 → CPU,可展开逻辑核心

  • 资源监视器(resmon):看进程 + 线程 CPU 占用

  • 性能监视器 perfmon.msc:可添加计数器,记录日志做历史分析

2. 命令行

# 查看CPU使用率
Get-Counter '\Processor(_Total)\% Processor Time'
# 查看进程CPU
Get-Process | Sort-Object CPU -Descending | Select-Object Name,Id,CPU

三、关键 CPU 指标判断标准

指标

说明

风险阈值参考

用户 us

业务应用占用

持续 >70% 需要关注;>85% 压力大

内核 sy

系统内核开销

持续 >30% 通常异常(可能锁、网络中断)

IO 等待 wa

等待磁盘 IO

>20% 大概率磁盘瓶颈,不是 CPU 问题

空闲 id

剩余 CPU 资源

系统负载

等待 CPU 的进程数

超过 CPU 逻辑核数,任务排队

重点区分:

  • us 高:业务代码消耗 CPU(代码循环、序列化、计算密集)

  • sy 高:频繁系统调用、大量小 IO、锁竞争

  • wa 高:磁盘慢,CPU 没事干在等 IO,不要升级 CPU

四、排查 CPU 高的标准流程(Linux)

  1. top 看全局:us/sy/wa,确认是 CPU 还是 IO 问题

  2. 看负载,mpstat -P ALL 判断是否单核打满

  3. top 按 P 排序,找到占用高 PID

  4. pidstat -t -p <pid> 看进程内线程 CPU

  5. Java:jstack <pid> 查看线程栈;Go:pprof

  6. 查看中断:cat /proc/interrupts,确认是否软中断暴涨

五、告警配置建议(Prometheus 示例告警规则思路)

  1. CPU 使用率持续 5 分钟 > 85%

  2. 15 分钟负载 > 逻辑 CPU 核数

  3. CPU 空闲持续低于 10%

六、容器环境补充(Docker/K8s)

容器内 top 看到的是宿主机 CPU,需要用容器工具:

# docker
docker stats
# k8s
kubectl top nodes
kubectl top pods

Prometheus 使用 cadvisor 采集容器 CPU 限制、使用率。


本文原创作者:易君召,详见:https://www.yijunzhao.cc/about,转载请注明出处。

原文链接 https://www.yijunzhao.cc/archives/server-cpu-monitoring-complete-example-commands

欢迎访问 https://www.yijunzhao.cc/

https://www.yijunzhao.cc/