服務器CPU過高,排查方法

top #定位異常的進程
top -H -p pid #查看異常的線程
strace -T -r -c -p pid #查看系統調用和花費的時間
printf "%x/n"線程號 #將異常線程轉化爲16進制
jstack 進程號|grep 線程號(16進制異常線程號)-A90 #定位異常的代碼

1、使用【top】命令定位異常進程,可發現12836的CPU和內存佔用率都非常高;
top 命令默認情況下,是每 3 秒刷新一次。也可以通過 top -d <刷新時間間隔> 來指定刷新頻率,如top -d 0.1 或top -d 0.01 等。top 執行時,也可以按“s ”鍵,修改時間間隔。

2、使用【top -H -p 進程號】查看異常線程
3、使用【printf “%x\n” 線程號】將異常線程號轉化爲16進制
4、使用【jstack 進程號|grep 16進制異常線程號 -A90】來定位異常代碼的位置(最後的-A90是日誌行數,也可以輸出爲文本文件或使用其他數字)。可以看到異常代碼的位置

參考資料
https://blog.csdn.net/weixin_39726863/article/details/90767436

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