云服务器cpu100%问题排查步骤

发布时间 2023-12-22 00:28:21作者: 猝死的路上

1.查找cpu使用率最高的进程,称为主进程
查看各种应用的cpu使用情况,按下大写P,从高到低排序
能看到占用cpu最多的那个主进程Pid,比如 13478

top -c

2.查找cpu使用率最高的进程里哪个线程占用cpu 最高,能得到一个线程Pid,比如 15678
top -Hp [主进程pid]

top -Hp 13478

3.将cpu使用率最高的线程Pid转换为16进制,得到 3D3E
print "%x\n" [线程Pid]

print "%x\n" 15678

4.打印内存堆栈信息
jstack [主进程id] | grep '0x3D3E' -CS -color

jstack  13478 | grep '0x3D3E' -CS -color

可以看到哪个类的哪个方法导致的cpu占用过高,根据回显的类和方法进行调整

1.查看僵尸进程
有时候云服务器上跑了多个应用,想把占用高的进程kill掉,但是又kill不掉,说是这个进程是僵尸进程,
使用 ps aux,回显的 STAT 栏会显示为 Z(zombie状态,僵尸进程),比如8546

ps aux

2.找到僵尸进程的父进程,比如 14236

ps -ef | grep 8546

3.先kill掉父进程

kill -9 14236

再尝试kill子进程

kill -9 8546