前言:
在伺服器報cpu過高時,往往我們束手無策,不知道怎麼排查問題,今天就來分享一個cpu過高排查問題的方法,此文章為轉載文章。
- 使用top指令定位異常程序。可以看見12836的CPU和記憶體占用率都非常高
- 此時可以再執行ps -ef | grep java,檢視所有的java程序,在結果中找到程序号為12836的程序,即可檢視是哪個應用占用的該程序。
- 使用top -H -p 程序号檢視異常線程
- 使用printf “%x\n” 線程号将異常線程号轉化為16進制
- 使用jstack 程序号|grep 16進制異常線程号 -A90來定位異常代碼的位置(最後的-A90是日志行數,也可以輸出為文本檔案或使用其他數字)。可以看到異常代碼的位置。

在執行 ./jstack 程序号 | grep 16進制異常線程号 -A90 即可。