JVM定位佔用cpu過高堆疊資訊(Linux)
阿新 • • 發佈:2019-01-22
第一步:使用top命令檢視程序佔用CPU的情況,獲取PID
top
從圖中可以看出cpu佔用高達46.5%的程序ID是16243
第二步:使用top -H -p命令獲取程序中執行緒資訊(其中H:顯示程序中執行緒的情況,p表示程序pid)
top -H -p 16243
上圖中最高的執行緒pid=17466
第三步:獲取最高的執行緒pid(十進位制,裝換成十六進位制),十進位制轉十六進位制可以手動計算也可以用python
-c "print hex(執行緒PID)"
第四步:檢視執行緒堆疊資訊,jstack
pid(程序pid) | grep 執行緒pid
grep有三個比較好用的引數,-A 10顯示關鍵字之後10行 -B 10 顯示關鍵字之前10行 -C 10 顯示關鍵字前後10行
從上圖中可以看到doFreshRoomChatInfoFromRedis方法消耗了大量CPU時間。到了這裡,剩下的就是分析程式碼了。