中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

JVM堆內(nèi)存使用率持續(xù)上升的一種排查思路

2018-07-02    來(lái)源:importnew

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用

最近新版本發(fā)布后,在運(yùn)行一段時(shí)間后程序突然無(wú)響應(yīng)了,觀察監(jiān)控,發(fā)現(xiàn)JVM堆內(nèi)存占用在某個(gè)時(shí)間點(diǎn)突然飆升,最終導(dǎo)致應(yīng)用無(wú)響應(yīng):

重啟Tomcat后,應(yīng)用恢復(fù)正常,并且后續(xù)時(shí)間沒(méi)有發(fā)生內(nèi)存上漲問(wèn)題。

分析這個(gè)JVM內(nèi)存曲線,他是直線上升的,以前遇到過(guò)類似的場(chǎng)景,會(huì)導(dǎo)致這種直線(勻速)上升的,一般是一個(gè)死循環(huán)導(dǎo)致的,如果是普通請(qǐng)求資源泄露的話,上升曲線不會(huì)這么平穩(wěn),會(huì)和請(qǐng)求量有一定的關(guān)系。

死循環(huán)導(dǎo)致這個(gè)線程的資源無(wú)法釋放,隨著循環(huán)次數(shù)的增多,累積的對(duì)象越來(lái)越多,最終導(dǎo)致堆內(nèi)存耗盡。

那要如何定位到具體的死循環(huán)位置呢?這個(gè)是個(gè)難題。之前遇到類似的問(wèn)題是通過(guò)dump生產(chǎn)環(huán)境的JVM內(nèi)存來(lái)分析,耗時(shí)耗力。結(jié)合之前的經(jīng)驗(yàn),這次我直接去nginx日志搜索響應(yīng)碼為504的請(qǐng)求,果不其然,在內(nèi)存飆升時(shí)間點(diǎn)附近,有一個(gè)被響應(yīng)504的請(qǐng)求。

504是什么響應(yīng)碼呢?這個(gè)響應(yīng)碼比較少遇到,指的是網(wǎng)關(guān)超時(shí) (Gateway timeout)。當(dāng)一個(gè)請(qǐng)求到Tomcat后,Tomcat如果陷入死循環(huán),那么這個(gè)請(qǐng)求自然無(wú)法得到響應(yīng),nginx等待響應(yīng)超時(shí),響應(yīng)給用戶504。

504響應(yīng)時(shí)間點(diǎn)和內(nèi)存飆升時(shí)間點(diǎn)對(duì)的上,那么大概率就是這個(gè)接口導(dǎo)致的,詳細(xì)分析這個(gè)接口的代碼,發(fā)現(xiàn)了在特殊參數(shù)的情況下,會(huì)進(jìn)入死循環(huán),修改后問(wèn)題解決。

總結(jié):

  1. 觀察JVM內(nèi)存曲線,是否是勻速上升
  2. 搜索Nginx響應(yīng)碼為504的日志,查看日志時(shí)間是否和內(nèi)存上升時(shí)間點(diǎn)匹配
  3. 分析Nginx響應(yīng)碼為504的請(qǐng)求,確認(rèn)是否存在死循環(huán)邏輯

標(biāo)簽: 代碼 搜索

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:Git 內(nèi)部原理之 Git 對(duì)象

下一篇:ERROR 3009 (HY000) : Column count of mysql.user is wrong