CPU飙高排查的几个步骤:
1.Top命令
TOP命令抓取的结果需要关注CPU使用率最高的,抓取的是 “进程” 维度,即一个物理机上部署的众多实例中,每个实例为一个进程; PID为进程ID;
结果:PID 17295
2.PS命令
命令选项 如下图;进程标识:即为1中查询到的PID ;关注CPU使用率 和 TID , TID为该进程开启的 线程列表 和 每个线程CPU的使用率;
结果:TID 17353
3.Jstack命令
进程标识:PID (1中查询到的结果)
结果:线程详情列表
4.转换查找
将2中的结果TID(10进制)转成16进制,如TID 17353 转成16进制 43c9,去3中的线程列表中检索,即可定位到CPU使用较高的线程!
以上,CPU使用率可能很快恢复,所以最好保留住实时的数据,故一定要把2 和 3执行完后的结果进行保存,之后再做分析,如果抓取这些信息较慢,CPU恢复了再抓,就都灰飞烟灭了!