排查Java高CPU占用原因

開篇

?在簡書看到一篇公眾號講如何排查CPU問題,想了想在日常工作中也偶爾遇到這樣的問題,所以在網(wǎng)上搜了搜該方面的文章,特意拷貝了一篇文章作日后排查參考。

?整體來說是按照三步走:

  • 1、top命令發(fā)現(xiàn)占用cpu最多的進程PID
  • 2、ps命令查看該進程下占用cpu最多的線程tid并轉換為16進制;
  • 3、jstack -l pid 保存進程堆棧并通過16進制的tid查找對應的代碼塊。


步驟

  • 1、top命令發(fā)現(xiàn)某個進程占用了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


參考

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容