tomcat閃退的一次排查記錄

1. 背景

項目部署在服務(wù)器上,在夜深人靜的時候閃退了2次,第二天早上來了之后,發(fā)現(xiàn)tomcat服務(wù)器又被關(guān)閉了,因為服務(wù)器之前總有人惡搞(行為類似:數(shù)據(jù)庫的配置信息max_packet被修改,在tomcat下跑了別人的項目),就一直認為是有人在惡搞,試著保護自己的服務(wù)器,用電腦管家殺了毒。以為沒事了,但是在下一天的早上同樣的事情又發(fā)生了,由于甲方的壓力,自己硬著頭皮去找出線索。

2. 行動

  • 看了tomcat的日志文件
    tomcat:localhost

    開始設(shè)想,是不是因為“sessionCreated” ,在網(wǎng)上搜索了sessionCreated,有人說是正常信息的打印,沒有往下繼續(xù)探索為什么會打印這種信息。

  • 繼續(xù)
    tomcat:access_log

    是不是因為這個呢,通過搜索發(fā)現(xiàn)也不是,網(wǎng)上說tomcat-user.xml把注釋刪掉就不會有這些東西了,我仍然沒有驗證。

  • 同樣在,access_log中發(fā)現(xiàn)這樣的錯誤信息
 java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986”

感覺就是地址中帶上了非法的字符,不應(yīng)該直接把tomcat搞崩潰啊,tomcat的日志文件都看了,依然什么線索沒有發(fā)現(xiàn),快要走不下去......

  • 直接百度吧
    直接在百度上搜索了“tcomat異常退出情況”
    看到了一個大牛的blog tomcat異常退出情況 果然就是不一樣,給我提供了幾種設(shè)想,會不會是應(yīng)為內(nèi)存溢出什么的呢,然后在tomcat的bin目錄下發(fā)發(fā)現(xiàn)了幾個好奇的文件
    tomcat異常退出日志
    這幾個文件這么面生,怎么從來沒有見過,打開一個,看不懂啊,那又能怎樣,繼續(xù)百度(隨意從文件中挑出一句話,沒錯就是第一句)
A fatal error has been detected by the Java Runtime Environment:

然后發(fā)現(xiàn)又好多大牛的關(guān)于此類問題的blog,我著重看的是這個大牛的 A fatal error has been detected by the Java Runtime Environment: 果然是站在巨人的肩膀上,分析的特別具體,但是由于自己太菜,有好多關(guān)于jvm的知識沒有接觸,反正最終的出的結(jié)論就是內(nèi)存不夠用

Stack: [0x0000000032d70000,0x0000000032e70000],  sp=0x0000000032e6ee50,  free space=1019k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [tcnative-1.dll+0x14ac2]
C  [tcnative-1.dll+0x11e7]
C  0x0000000004b04d0a

發(fā)現(xiàn)free space 僅有1M,感覺顯示內(nèi)存溢出的原因,既然有了這個原因,就下手吧


故事還未完,項目需要一段時間的測試,來驗證問題是否已經(jīng)解決。
經(jīng)過1個星期的測試,項目沒有閃退過,應(yīng)該就是這個問題了。


3. 總結(jié)

  1. 平時要加強對底層知識的學(xué)習(xí)力度
  2. 要善于查看日志,能夠根據(jù)日志分析項目的運行狀態(tài)
  3. 保持一顆好奇心,對未知的事物不要服從
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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