转载:原文看这里

看到一篇文章关于CPU load100%问题的排查思路,故实操整理一遍。

Step-1:找到CPU占用最高的进程

$ top -c //显示进程运行信息列表

$ P //进程按照CPU使用率排序

图例:

step-1

上图中消耗CPU最高的进程号为4150

Step-2:找到进程中CPU消耗最高的线程

$ top -Hp 4150 //显示一个进程的线程运行信息列表

$ P //线程按照CPU使用率排序

图例:

step-2

进程4150内,最耗CPU的线程为4157

Step-3:将线程ID转换为十六进制

$ printf “%x\n” 4157 //结果为“103dn”

Java堆栈里,线程id是用16进制表示的

Step-4:查看堆栈中当前线程在做什么

$ jstack 4150 | grep ‘103dn’ -C5 –color