記一次tomcat啓動後無服務的問題

問題描述:測試環境tomcat啓動後無服務。


針對這個問題:我想了很多思路,這裏只是說下正確的思路。


使用到的工具有:jps ,jstat ,jmap,vislualVM


tomcat啓動後無服務。在jdk/bin目錄下有兩個工具。jps 和 jstat 。

一:jsp查看到tomcat的pid,就是 18938 Bootstrap 這樣的一個進程


二:jstat -gcutil 18938  1000  10

打印內存情況,1000表示1秒打印一次,10表示打印10次。打印的結果會是:

 S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
 75.52   0.00  48.74  99.04  40.40    154    2.552     0    0.000    2.552
 75.52   0.00  48.75  99.04  40.40    154    2.552     0    0.000    2.552

朱惡意這裏有一個O,表示Old使用的百分比,我這裏Old使用了99,就表示Old區已經滿了。於是我在tomcat的啓動參數上加了打印gc日誌。


三:在tomcat的bin下的  catalina.sh 的jvm參數加了   -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:../logs/gc.log

    tomcat啓動後,直接在gc.log看到了系統在不斷的執行FULL GC,如下圖



  


全是這個。


四:看到這裏,我想看看線程

在幹嘛:於是內存轉儲 : jmap -dump:format=b,file=test.dump  12819

    得到test.dump文件後用jdk下bin的visualVM打開,在線程那裏就可以看到所有的線程正在執行的過程。


五:我在線程執行中看到了Spring 在初始化容器,於是在線程調用棧中找到了 new ClassPathXmlApplicationContext 這樣的代碼在被多個線程執行。於是修改了代碼。


六:修改代碼後,程序發佈後,old區保持在30%左右,系統非常穩定。


發佈了118 篇原創文章 · 獲贊 9 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章