CPU占用率100%问题的解决步骤
我们经常会解决一些cpu占用率100%的问题,有些问题可能比较容易分析,比如正在处理大文件、或进行复杂运算。但是有些问题往往隐藏的比较深,因此需要进行稍微专业一点的分析,看看是哪些进程占用了cpu资源,进而分析是进程中的哪些线程占用了cpu资源,最终通过导出堆栈轨迹,分析是哪块代码出现了问题。
现整理解决该问题的大致步骤,供大家参考:
1. 确定cpu占用率高的进程ID - PID
在Linux下可以使用 jps -v
或者 top
命令直接查看。
2. 查看进程中cpu占用率高的线程ID - TID
执行top -H -p [PID]
,查看结果
3. 将线程ID - TID 转换成16进制 - XTID
执行printf "%x\n" [TID]
,输出结果记为 XTID
4. 将进程中的所有线程输出到文件
执行命令jstack [PID] >> jstack.txt
。
5. 在输出文件中查找对应的线程ID
执行命令cat jstack.txt | grep -i [XTID]
。