一台机器,CPU100%,如何找到相关服务,如何定位问题代码,今天简单分享下思路。
简要步骤如下:
-
找到最耗CPU的进程;
-
找到最耗CPU的线程;
-
查看堆栈,定位线程在干嘛,定位对应代码;
步骤一、找到最耗CPU的进程
工具:top 方法:
-
执行top -c ,显示进程运行信息列表
-
键入P (大写p),进程按照CPU使用率排序 图示:
步骤二:找到最耗CPU的线程
工具:top 方法:
-
top -Hp 10765 ,显示一个进程的线程运行信息列表
-
键入P (大写p),线程按照CPU使用率排序 图示:
步骤三:导出进程快照
jstack -l 10765 > ./10765.stack
步骤四:再⽤grep查看⼀下线程在快照⽂件里的内容
cat 2609.stack |grep '0x2a34' -C 8
注意:10804对应的16进制是0x2a34