首页/系统/信创系统运维速查/CPU 占用高的定位
常见问题65 条

CPU 占用高的定位

CPU 高完分用户态还是内核态:top 批处理找进程,pidstat 看趋势,配合线程视图与软中断区分计算密集、系统调用与中断。

信创系统运维速查系统更新于 2026-10-13

CPU 占用高怎么定位

CPU 高要先分清是用户态、内核态还是中断导致的:用户态高通常对应应用自身计算密集或死循环;内核态高常见于频繁系统调用;软中断高则与网络或磁盘中断处理相关。排查路径是先看整体与进程排行,再下钻到线程级别,必要时结合系统调用追踪查看具体行为。处置前先留证据,重启会丢掉现场。

基本信息

整体快照top 的批处理模式或 ps 按 CPU 排序
趋势观察pidstat 观察单进程一段时间内的占用
线程视图top -H 或按线程维度查看占用
中断信息/proc/softirqs 与 top 中的中断占比
依赖工具sysstat 包提供 mpstat、pidstat 等命令

典型使用场景

  • 服务响应变慢,需要确认是否由 CPU 饱和引起
  • 监控告警提示 CPU 使用率持续偏高,需要定位到具体进程
  • 单核跑满导致延迟上升,需要判断是中断亲和还是单线程热点
  • 排查系统调用密集场景,确认是否存在频繁轮询
  • 压测前后对比 CPU 分布,评估优化是否有效
  • 多个业务共用一个实例时,评估资源竞争与隔离需求

快速定位与下钻

快速定位与下钻
top -b -n1 -o %CPU | head -15            # 按 CPU 排序的单次快照
ps aux --sort=-%cpu | head -10           # 进程级占用排行
mpstat -P ALL 1 3 2>/dev/null || echo 'sysstat 未安装'
pidstat -p <PID> 1 5 2>/dev/null          # 单进程 CPU 趋势
top -H -p <PID>                          # 线程级占用(关注热点线程)
cat /proc/softirqs | head -20            # 内核态高时看软中断分布
pidstat -w -p <PID> 1 5 2>/dev/null       # 上下文切换情况
uptime                                   # 负载均值与运行时长

占用类型与方向

类型典型特征处理方向
用户态高进程自身 CPU 占用高优化算法或扩容,检查死循环
内核态高系统调用时间占比高结合调用追踪看具体行为
软中断高中断占比明显检查网络与磁盘中断分布
单核跑满整体未满但延迟升高确认是否单线程热点或亲和问题
负载高但 CPU 低等待 IO 或锁竞争转查 IO 与阻塞点
先看整体再看线程:整体跑满与单核跑满的处理方向不同,前者可能是并发量问题,后者往往是单线程热点或中断绑定不均衡。
处置前先留证据:抓一份进程与线程快照,必要时保存线程栈;直接重启会让热点行为无从查证,同类问题还会再出现。

易错点

  • 只看整体使用率不看线程分布,单核跑满类问题被误判为整体容量不足
  • 拿不到趋势数据只凭瞬时快照下结论,偶发占用与持续占用被混为一谈
  • 重启前不留现场,问题原因无法复现,只能靠猜测处理
  • 把负载均值当成 CPU 使用率,IO 等待与锁竞争场景会得出错误方向

数据来源与参考

  • man 1 top
  • man 1 pidstat
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌