查找CPU达到 100% 的原因

Author Avatar
xuanzh.cc 10月 26, 2017
  • 在其它设备中阅读本文章

1、查出进程id
通过 《查看 linux 内存或者 cpu 占用前几的进程》 的文章方法找到 cpu 占用高的进程。

例如:

1
ps -aux | sort -k3nr | head -2

输出为:

1
2
kafka 5131 53.6 1.8 8367112 1228944 ? Sl Aug31 1095:12 /usr/java/jdk1.7.0_67-cloudera/bin/java -Xmx1024M com.zx.cc.TestCpu
storm 32180 21.5 0.7 11055560 518320 pts/5 Sl Aug31 385:45 xxxxxxx

可以看出 进程号为 5131

2、查找进程内部出问题的线程
使用命令

1
top –H –p 5131

输出为:

1
2
3
4
5
6
7
8
9
10
top - 20:13:13 up 1 day, 10:11, 19 users, load average: 1.89, 2.09, 2.19
Threads: 86 total, 2 running, 84 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.4 us, 2.9 sy, 0.0 ni, 89.5 id, 1.9 wa, 0.0 hi, 0.3 si, 0.0 st
KiB Mem : 65559468 total, 538288 free, 49190472 used, 15830708 buff/cache
KiB Swap: 33554428 total, 33554428 free, 0 used. 15459836 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6126 kafka 20 0 8367112 1.172g 14568 R 11.6 1.9 262:58.95 java
6125 kafka 20 0 8367112 1.172g 14568 R 11.3 1.9 253:46.89 java
6124 kafka 20 0 8367112 1.172g 14568 S 9.6 1.9 227:21.60 java

发现线程id是 6126