CPU 飙高排查¶
现象¶
- 系统响应变慢。
- 接口超时。
- 负载升高,
uptime中 load average 明显高于 CPU 核数。
快速判断¶
uptime
top
ps aux --sort=-%cpu | head -n 10
排查命令¶
# 查看进程线程
ps -T -p <PID>
# 查看进程打开文件
lsof -p <PID> | head
# 查看进程启动命令
ps -fp <PID>
Java 服务可继续查看线程栈:
jstack <PID> | head
常见原因¶
- 定时任务、报表任务、备份任务在高峰期运行。
- 应用线程死循环、锁竞争或频繁 GC。
- 异常进程、挖矿进程或未知脚本占用 CPU。
- 容器 CPU limit 过低,导致应用持续抢占。
处理建议¶
- 先确认高 CPU 进程是否为业务进程、定时任务、备份任务或异常进程。
- 对业务进程优先收集日志、线程栈、监控截图,再考虑重启。
- 对未知进程,先确认路径、用户、启动时间,不要直接强杀。
高危提醒¶
kill -9会直接终止进程,可能导致未写入数据丢失。- 重启服务前确认是否有流量切换、主备切换或告警通知机制。