Linux下cpu過高問題排查


原文地址:https://blog.csdn.net/chenjunan888/article/details/80447800

在服務器報cpu過高時,可使用以下命令,快速導出堆棧信息,以方便查看具體的問題。

 

 

1. 使用top命令定位異常進程。可以看見12836的CPU和內存占用率都非常高

此時可以再執行ps -ef | grep java,查看所有的java進程,在結果中找到進程號為12836的進程,即可查看是哪個應用占用的該進程。

2. 使用top -H -p 進程號查看異常線程

3. 使用printf "%x\n" 線程號將異常線程號轉化為16進制

4. 使用jstack 進程號|grep 16進制異常線程號 -A90來定位異常代碼的位置(最后的-A90是日志行數,也可以輸出為文本文件或使用其他數字)。可以看到異常代碼的位置。

注意事項:

如果提示 -bash: jstack: command not found,則可以找到jdk的目錄,進入bin目錄,

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

   
如果提示 well-known file is not secure,則是因為賬號權限的問題。在/tmp/hsperfdata_$USER/目錄,有一個以進程號命名的文件,當我們執行jmap或者jstack出現上敘信息時,先檢查執行該命令的用戶是否和hsperfdata_$USER這個文件所屬的用戶一致,如果不一致,切換至成一致再執行。執行:sudo -u 有權限的賬號 ./jstack 進程號 | grep 16進制異常線程號 -A50 即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM