排查Java高CPU占用原因

开篇

 在简书看到一篇公众号讲如何排查CPU问题,想了想在日常工作中也偶尔遇到这样的问题,所以在网上搜了搜该方面的文章,特意拷贝了一篇文章作日后排查参考。

 整体来说是按照三步走:

  • 1、top命令发现占用cpu最多的进程PID
  • 2、ps命令查看该进程下占用cpu最多的线程tid并转换为16进制;
  • 3、jstack -l pid 保存进程堆栈并通过16进制的tid查找对应的代码块。


步骤

  • 1、top命令发现某个进程占用了100%的CPU


  • 2、通过ps命令,进一步确定哪个进程出了问题


  • 3、再查看线程占用CPU的列表
ps -mp PID(进程号)  -o THREAD,tid,time

说明:
-m Show threads after processes


  • 4、找到占用CPU最高的线程,查看TID,将其转换为16进制格式
printf "%x\n" TID


  • 5、而后查看堆栈信息
jstack PID |grep 16进制TID -A 60


参考

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容