分析 CPU 使用率异常,通常需要从“现象 → 定位 → 根因 → 验证”四个步骤系统排查。下面以 Linux 服务器 为主说明,同时补充通用思路。
先明确是不是真的异常,而不是业务高峰:
常用命令:
top
htop
uptime
vmstat 1
top -c
关注:
%CPUCOMMANDtop -Hp <pid>
记录高 CPU 线程的 tid
docker stats
kubectl top pods
CPU 使用率异常通常分几类:
说明是业务代码或程序逻辑问题
通常是:
不是 CPU 本身问题,而是:
# 线程 tid 转 16 进制
printf "%x\n" <tid>
# 查堆栈
jstack <pid> | grep <nid> -A 30
常见问题:
vmstat 1
pidstat -w 1
如果 cs(context switch)很高:
strace -p <pid> -c
看是否大量:
read/writefutexepoll| 现象 | 可能原因 |
|---|---|
| us 高 | 死循环、算法复杂、GC |
| sy 高 | 锁、 syscall、线程多 |
| wa 高 | 磁盘/数据库慢 |
| si 高 | 网络中断 |
| load 高但 CPU 不高 | 等待资源(IO/锁) |
如果你愿意,可以告诉我:
top 或 vmstat 输出我可以帮你具体分析是哪一类问题。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。