tomcat啟動(dòng)后服務(wù)器內(nèi)存與CPU占用過(guò)高導(dǎo)致項(xiàng)目掛掉

檢查到項(xiàng)目代碼中的問(wèn)題:

1.用戶數(shù)量增加,線程數(shù)量過(guò)多,內(nèi)存吃緊

2.早期為保持?jǐn)?shù)據(jù)同步準(zhǔn)確性,增加的頻繁更新數(shù)據(jù)庫(kù)操作導(dǎo)致連接數(shù)據(jù)庫(kù)數(shù)量過(guò)大。

3.由于改進(jìn)了消息及時(shí)推送機(jī)制,頻繁更新用戶標(biāo)識(shí)組的操作,存在粉絲過(guò)多的大號(hào)推送消息更新非常慢。


原文出處:http://www.blogjava.net/hankchen

現(xiàn)象:

在tomcat中部署Java的web應(yīng)用程序,過(guò)一段時(shí)間后出現(xiàn)tomcat的java進(jìn)程持續(xù)占用cpu高達(dá)100%,導(dǎo)致web程序訪問(wèn)受阻。

可能原因分析:

可能程序確實(shí)在進(jìn)行數(shù)據(jù)計(jì)算;或程序進(jìn)入死循環(huán);

解決方法:

1、先用top查看占用cpu的進(jìn)程id

2、再用ps -ef |grep PID定位具體的進(jìn)程主體;如是否是tomcat啟動(dòng)的java程序

3、用ps -mp pid -o THREAD,tid,time打印出該進(jìn)程下的線程占用cpu情況


找到了耗時(shí)最高的線程28802,占用CPU時(shí)間快兩個(gè)小時(shí)了!

4、其次將需要的線程ID轉(zhuǎn)換為16進(jìn)制格式:

printf "%x\n" tid


5、最后打印線程的堆棧信息:

jstack pid |grep tid -A 30

找到出現(xiàn)問(wèn)題的代碼,并分析具體函數(shù)中是否有可能出現(xiàn)死循環(huán)的代碼段。

通常問(wèn)題出現(xiàn)在while, for之類(lèi)的循環(huán)代碼片段。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,854評(píng)論 18 399
  • 1、故障現(xiàn)象 客服同事反饋平臺(tái)系統(tǒng)運(yùn)行緩慢,網(wǎng)頁(yè)卡頓嚴(yán)重,多次重啟系統(tǒng)后問(wèn)題依然存在,使用top命令查看服務(wù)器情況...
    會(huì)跳舞的機(jī)器人閱讀 31,095評(píng)論 20 60
  • 又來(lái)到了一個(gè)老生常談的問(wèn)題,應(yīng)用層軟件開(kāi)發(fā)的程序員要不要了解和深入學(xué)習(xí)操作系統(tǒng)呢? 今天就這個(gè)問(wèn)題開(kāi)始,來(lái)談?wù)劜?..
    tangsl閱讀 4,333評(píng)論 0 23
  • 我有一畝田 是彩色的云和天 你似一朵蓮 盛開(kāi)在眉間 思念之前 你在田邊 唱著芊芊 遠(yuǎn)方戰(zhàn)鼓 把離別傾訴 你身著戎裝...
    南婉Miss閱讀 211評(píng)論 0 0
  • 《戰(zhàn)狼2》 人們只看到了上映四天破十億票房 卻不知道他出道已經(jīng)22年 為了拍好這部電影 專(zhuān)門(mén)去特種部隊(duì)訓(xùn)練了18個(gè)...
    蒹葭essay閱讀 241評(píng)論 0 0

友情鏈接更多精彩內(nèi)容