Java進(jìn)程cpu頻繁100%問題解決方案
1.在一次周末收到部門的反饋,線上機器java進(jìn)程的cpu會頻繁100% 監(jiān)控系統(tǒng)發(fā)了很多報警郵件,于是登錄跳板機進(jìn)行排查解決2.使用top命令查看進(jìn)程情況
發(fā)現(xiàn)每隔個幾秒cpu就達(dá)到100%左右,報警郵件確實是誠不欺我,java進(jìn)程有問題
2.于是查看下到底是java進(jìn)程下的哪個線程造成的cpu頻繁100%
使用top -Hp 25567 查看進(jìn)程下的線程信息
得到線程編號26250
3.查看該線程的棧信息
printf '%x\n' 26250 獲取26250的16進(jìn)制數(shù)為668a
jstack25567 |grep -A 30668a 得到該線程棧信息
ContainerBackgroundProcessor[StandardEngine[Catalina]] 這是什么任務(wù),沒見過啊,懵了
繼續(xù)看下面的棧信息有apache.catalina之類的信息(上圖沒有截全)
我們的java服務(wù)是通過war包的形式發(fā)布到tomcat里的,想著是不是因為tomcat配置的問題
先網(wǎng)上查一下吧(吃了不了解tomcat底層的虧)
4.根據(jù)網(wǎng)上的資料,有一種說法說是因為tomcat的server.xml的reload屬性設(shè)置為了true,那么reload屬性有什么作用呢?
如果這個屬性設(shè)為true,tomcat服務(wù)器在運行狀態(tài)下會監(jiān)視在WEB-INF/classes和WEB-INF/lib目錄下class文件的改動,如果監(jiān)測到有class文件被更新的,服務(wù)器會自動重新加載Web應(yīng)用。在開發(fā)階段將reloadable屬性設(shè)為true,有助于調(diào)試,但這樣用會加重服務(wù)器運行負(fù)荷,建議在Web應(yīng)用的發(fā)存階段將reloadable設(shè)為false。
看到這趕緊和其他節(jié)點的tomcat配置對比一下,發(fā)現(xiàn)其他節(jié)點的reload都配置為false,只有這一臺有問題了的設(shè)置為了true。
什么也不說了修改reload為false進(jìn)行重啟,當(dāng)然如果真的不是因為reload配置導(dǎo)致cpu頻繁100%的話,設(shè)置reload為false對系統(tǒng)也是有好處的。
5.修改reload為false進(jìn)行驗證
修改配置重啟后果然沒有再頻繁出現(xiàn)cpu 100%了,至于為什么運行這么久監(jiān)控系統(tǒng)才發(fā)通知郵件呢,后來做監(jiān)控的小伙伴說是因為他們那邊信息采集出了問題,沒有發(fā)現(xiàn)。
還有一個問題,為什么單單只有這一臺reload為false了,真相只有一個,項目擴(kuò)展節(jié)點時,小伙伴使用測試環(huán)境的server.xml配置文件,然后改改端口,war路徑就給發(fā)上去了,這才引出這樣的問題
問題總算解決了。。。。。。。。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
IDEA生成可運行jar包(包含第三方j(luò)ar包)流程詳解
這篇文章主要介紹了IDEA生成可運行jar包(包含第三方j(luò)ar包)流程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11Mybatis查詢返回Map<String,Object>類型的實現(xiàn)
本文主要介紹了Mybatis查詢返回Map<String,Object>類型的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07SpringBoot如何接收Post請求Body里面的參數(shù)
這篇文章主要介紹了SpringBoot如何接收Post請求Body里面的參數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03Java使用反射和動態(tài)代理實現(xiàn)一個View注解綁定庫
這篇文章主要介紹了Java使用反射和動態(tài)代理實現(xiàn)一個View注解綁定庫,代碼簡潔,使用簡單,擴(kuò)展性強,結(jié)合實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05