溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

因Java應(yīng)用造成CPU過高怎么排查

發(fā)布時間:2021-09-09 11:34:52 來源:億速云 閱讀:130 作者:小新 欄目:編程語言

這篇文章主要介紹因Java應(yīng)用造成CPU過高怎么排查,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

使用top命令查詢服務(wù)cpu使用情況

因Java應(yīng)用造成CPU過高怎么排查

服務(wù)器資源使用率

可以看到31737這個進程的CPU使用率巨大

使用top -Hp 31737查詢31737進程中各個線程的資源使用率

top -Hp 31737

使用top -Hp 31737查詢31737進程中各個線程的資源使用率

因Java應(yīng)用造成CPU過高怎么排查
31737進程中各個線程的使用率

由于當(dāng)時的截圖丟失了,簡單說一下,使用top -Hp 31737命令查詢到31737進程中,一個線程id為5322占用CPU過高

使用printf "%x\n" 5322把線程id轉(zhuǎn)化為十六進制

printf "%x\n" 5322

因為打印線程棧的時候,本地線程標識nid是用十六進制表示的,使用該命令把線程id轉(zhuǎn)化為十六進制

因Java應(yīng)用造成CPU過高怎么排查
5322的十六進制為14ca

使用jstack命令打印堆棧信息

jstack 31737 | grep -10 14ca

使用jstack 31737 | grep -10 14ca打印31737的堆棧信息,并查找本地線程標識為14ca的線程堆棧信息

因Java應(yīng)用造成CPU過高怎么排查

31737的堆棧信息

如圖,線程的狀態(tài)為TIMED_WAITING,對象等待中,查看源碼

因Java應(yīng)用造成CPU過高怎么排查

出現(xiàn)問題的代碼

發(fā)現(xiàn)問題的原因就不做詳細分析了,這里主要是分享一下問題排查的過程

度娘一下有個大神回答的不錯,連接在這里,有興趣的可以自己去看一下https://stackoverflow.com/questions/6981564/why-must-the-jdbc-driver-be-put-in-tomcat-home-lib-folder/7198049#7198049

因Java應(yīng)用造成CPU過高怎么排查

以上是“因Java應(yīng)用造成CPU過高怎么排查”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI