Java項目CPU佔比100%排查步驟

這個問題如果寫代碼的時候注意點一般不會發生,常見的導致該問題的原因是程序出現死循環,另外就是在面試的時候經常會被問到,所以自己整理記錄一下。

1、通過linux的top命令查看哪個線程佔用CPU比較高

在我自己的阿里雲服務器上操作了一下,如上圖,但是系統中沒有Java進程佔用CPU比較高的,但是不妨礙接下來的操作,接下來就用上圖中的進程PID爲24896的Java項目來進行實驗。 

2、使用 pidstat  -p   PID   -u    -t 命令來查看PID進程下的線程情況

 如上圖所見通過上面的命令能查看到進程24896下的所有的線程的一些情況,包括線程ID(TID)和CPU佔比,咱們暫且用圖中最後一個線程24875來進行後面的操作。

3、將24875轉成十六進制,如下圖所示

4、通過Java提供的命名,jstack   PID |  grep TID   -A   30 來打印指定線程的堆棧信息

最後通過像上圖所示的堆棧信息來判斷是哪些代碼導致了CPU佔用比較高。

參考文章:java 應用程序 cpu 100% 問題排查與解決Java死鎖排查和Java CPU 100% 排查的步驟整理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章