1.利用top命令查找异常进程
top
输入top
命令后,可以按P(shift+p)根据cpu占用排序、按M根据内存占用排序、按T根据运行时间排序。
这里先按P根据cpu排序查找异常的线程:
可以看到,有个pid为19132的线程占用cpu400%(这里是因为4核,每个cpu都100%,加起来就是400%)
2.根据记录的pid查找其线程占用情况
top -Hc -p 19132
说明:这里-Hc是指按照cpu占用降序
这里可以看到这个pid为31395的线程cpu占用非常高,且运行时间也非常长,肯定是有问题的。
3.打印出异常进程信息
先根据第1步查出的pid,打印出线程堆栈信息到文件:
jstack 19321 > stack-19321.log
根据第二步查出的pid,打印出其16进制:
printf %x 31395
7aa3
然后去stack-19321.log文件里查找7aa3:
vim stack-19321.log
/7aa3
即可。