服务器 CPU 使用率过高是常见的运维问题,排查通常遵循“先看整体 → 再定位进程 → 再分析线程/代码 → 最后确认原因”的思路。下面给你一套通用排查流程(Linux 环境为主,也适用于大多数服务器)。
top
或更好用的:
htop
关注:
%Cpu(s):us(用户态)、sy(系统态)、id(空闲)按 P 可按 CPU 排序。
mpstat -P ALL 1
判断是:
ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | head
记录:
top -Hp <PID>
或
ps -T -p <PID> -o pid,spid,pcpu,cmd
找到高 CPU 的 线程 ID(SPID)
printf "%x\n" <SPID>
jstack <PID> | grep <十六进制线程ID> -A 20
可以看到:
top -Hp 单线程 CPU 100%jstack 看到 RUNNABLE + 业务方法✅ 解决:
jstat -gcutil <PID> 1000
如果:
✅ 解决:
perf top
或
strace -p <PID>
常见:
✅ 解决:
特征:
✅ 解决:
| 工具 | 作用 |
|---|---|
| top / htop | 实时 CPU |
| mpstat | 多核分析 |
| pidstat | 进程/线程 CPU |
| perf | 内核级热点 |
| jstack / jstat | Java 专用 |
| nethogs | 网络进程排查 |
top → 高 CPU 进程top -Hp → 高 CPU 线程jstack / perf → 在做什么如果你愿意,可以告诉我:
us 高还是 sy 高我可以直接帮你针对性给命令和判断思路。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。