结论:先用 top 定位是哪个进程在吃 CPU,再顺着进程查线程和调用栈,别急着重启。

① 登录服务器执行 top,按 P 键按 CPU 排序,记下占用最高的 PID。如果是业务进程,继续用 top -H -p PID 看具体线程,把线程号转成十六进制后配合 jstack 或 pstack 抓栈,能快速定位到是哪段代码在死循环或频繁 GC。

② 如果高占用的是系统进程,重点看 ksoftirqd、kworker 这类内核线程,通常是网络软中断或磁盘 IO 打满导致,用 sar -n DEV 和 iostat -x 1 确认瓶颈在网卡还是磁盘。

③ 排查期间先别杀进程,用 pidstat -p PID 1 观察几分钟,区分是持续满载还是周期性尖峰,周期性尖峰多半和定时任务、缓存过期或外部调用超时重试有关。

④ 找到根因后再处理:代码问题改代码,配置问题调参数,突发流量则考虑限流或扩容,同时把这次现象和指标记进监控告警,避免下次靠人肉发现。