這篇文章主要講解了“如何排查Java應(yīng)用占用CPU較高導(dǎo)致系統(tǒng)響應(yīng)慢的問題”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何排查Java應(yīng)用占用CPU較高導(dǎo)致系統(tǒng)響應(yīng)慢的問題”吧!
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比臨海網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式臨海網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋臨海地區(qū)。費用合理售后完善,十年實體公司更值得信賴。
某項目組反饋:應(yīng)用生產(chǎn)環(huán)境出現(xiàn)請求響應(yīng)實際較長,經(jīng)常出現(xiàn)客戶端請求超時的現(xiàn)象,系統(tǒng)幾乎不可用。
在數(shù)據(jù)庫服務(wù)器、應(yīng)用服務(wù)器中執(zhí)行top命令,發(fā)現(xiàn)應(yīng)用服務(wù)器java進程占用CPU較高。正常情況下,在沒有流量的情況下,應(yīng)用服務(wù)器CPU使用率應(yīng)該在1%以內(nèi),但當時查看CPU利用率大概在20%到30%左右。(這是事后補的圖)
記錄占用CPU較高的進程號(pid)。
執(zhí)行top -H -p <pid>,查看占總CPU較高的線程。
執(zhí)行命令printf "%x\n" <pid>(這里pid時top -H -p <pid>獲得的線程號,例如上圖中的5800、5772等),將十進制線程號轉(zhuǎn)換為16進制。
執(zhí)行jstack -l <pid> > threadinfo.txt(這里pid時top命令中活得的進程id)利用JDK自帶的命令行jstack,將線程信息轉(zhuǎn)儲到文件threadinfo.txt文件中。然后在文件中,查找16進制線程號對應(yīng)的執(zhí)行程序為:
java.util.concurrent.LinkedBlockingQueue.remove()方法
通過百度(google),是一個JDK1.8低級版本的Bug。升級生成環(huán)境JDK到1.8_238后,問題解決。
執(zhí)行命令jmap -histo <pid>(這里pid時top命令獲得的占用CPU較高的進程號) | head -n 20
執(zhí)行命令jmap -dump:file=/tmp/javaDump.hprof,format=b <pid>(這里pid時top命令定位的占用CPU較高的進程號)
感謝各位的閱讀,以上就是“如何排查Java應(yīng)用占用CPU較高導(dǎo)致系統(tǒng)響應(yīng)慢的問題”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對如何排查Java應(yīng)用占用CPU較高導(dǎo)致系統(tǒng)響應(yīng)慢的問題這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
網(wǎng)站標題:如何排查Java應(yīng)用占用CPU較高導(dǎo)致系統(tǒng)響應(yīng)慢的問題
當前URL:http://jinyejixie.com/article14/pspege.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、商城網(wǎng)站、網(wǎng)站設(shè)計公司、關(guān)鍵詞優(yōu)化、微信公眾號、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)