在Tomcat中開啟JVM GC日志收集

Tomcat環(huán)境變量設(shè)置

在tomcat的安裝目錄的bin目錄下,編輯一個名為setenv.sh的文件(如果沒有請創(chuàng)建),在環(huán)境變量名字為 CATALINA_OPTS的變量其中添加:

XX:+PrintGCTimeStamps -XX:+PrintGCDetails -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+PrintHeapAtGC -Xloggc:/var/log/jvm/`date +"%Y-%m-%d"`_gc.log          

可以參考:

export CATALINA_OPTS=" -Djava.net.preferIPv4Stack=true -Dcom.sun.management.jmxremote=true -Djava.security.egd=file:/dev/./urandom -Xms512M -Xmx4096M -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime -XX:+PrintHeapAtGC -Xloggc:/var/log/jvm/`date +"%Y-%m-%d"`_gc.log"                     

日志切割設(shè)置

過于大的log文件會使分析變得較為困難,因此我們需要定時的去切割日志文件。

到/etc/logrotate.d新創(chuàng)建一個文件,就叫jvm吧:

/var/log/jvm/*.log {
        rotate 300
        size = 500M
        dateext
        missingok
}

參考資料:Linux 下 logrotate 日志輪詢操作梳理

日志分析工具

用肉眼掃描JVM的GC日志文件算是一件痛苦的事情,我們可以借助一些工具來輔助我們,推薦如下:

(0)gceasy.io

參考文章:http://www.itdecent.cn/p/72b6e306b9c7

(1)GCHisto

http://java.net/projects/gchisto


直接點(diǎn)擊gchisto.jar就可以運(yùn)行,點(diǎn)add載入gc.log
統(tǒng)計了總共gc次數(shù),youngGC次數(shù),F(xiàn)ullGC次數(shù),次數(shù)的百分比,GC消耗的時間,百分比,平均消耗時間,消耗時間最小最大值等


統(tǒng)計的圖形化表示


YoungGC,FullGC不同消耗時間上次數(shù)的分布圖,勾選可以顯示youngGC或fullGC單獨(dú)的分布情況


整個時間過程詳細(xì)的gc情況,可以對整個過程進(jìn)行剖析

(2)GCLogViewer


http://code.google.com/p/gclogviewer/


點(diǎn)擊run.bat運(yùn)行


整個過程gc情況的趨勢圖,還顯示了gc類型,吞吐量,平均gc頻率,內(nèi)存變化趨勢等
Tools里還能比較不同gc日志


(3)HPjmeter


獲取地址 http://www.hp.com/go/java參考文檔 http://www.javaperformancetuning.com/tools/hpjtune/index.shtml


工具很強(qiáng)大,但只能打開由以下參數(shù)生成的GC log, -verbose:gc -Xloggc:gc.log,添加其他參數(shù)生成的gc.log無法打開。

(4)GCViewer

http://www.tagtraum.com/gcviewer.html
這個工具用的挺多的,但只能在JDK1.5以下的版本中運(yùn)行,1.6以后沒有對應(yīng)。

(5)garbagecat

http://code.google.com/a/eclipselabs.org/p/garbagecat/wiki/Documentation

其它監(jiān)控方法
Jvisualvm動態(tài)分析jvm內(nèi)存情況和gc情況,插件:visualGC


jvisualvm還可以heapdump出對應(yīng)hprof文件(默認(rèn)存放路徑:監(jiān)控的服務(wù)器 /tmp下),利用相關(guān)工具,比如HPjmeter可以對其進(jìn)行分析
grep Full gc.log粗略觀察FullGC發(fā)生頻率
jstat –gcutil [pid] [intervel] [count]
jmap -histo pid可以觀測對象的個數(shù)和占用空間jmap -heap pid可以觀測jvm配置參數(shù),堆內(nèi)存各區(qū)使用情況
jprofiler,jmap dump出來用MAT分析

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

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

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