美文网首页
在Tomcat中开启JVM GC日志收集

在Tomcat中开启JVM GC日志收集

作者: 泊浮目 | 来源:发表于2017-06-11 19:40 被阅读2995次

    Tomcat环境变量设置

    在tomcat的安装目录的bin目录下,编辑一个名为setenv.sh的文件(如果没有请创建),在环境变量名字为 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"                     
    

    日志切割设置

    过于大的log文件会使分析变得较为困难,因此我们需要定时的去切割日志文件。

    到/etc/logrotate.d新创建一个文件,就叫jvm吧:

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

    参考资料:Linux 下 logrotate 日志轮询操作梳理

    日志分析工具

    用肉眼扫描JVM的GC日志文件算是一件痛苦的事情,我们可以借助一些工具来辅助我们,推荐如下:

    (0)gceasy.io

    参考文章:http://www.jianshu.com/p/72b6e306b9c7

    (1)GCHisto

    http://java.net/projects/gchisto


    直接点击gchisto.jar就可以运行,点add载入gc.log
    统计了总共gc次数,youngGC次数,FullGC次数,次数的百分比,GC消耗的时间,百分比,平均消耗时间,消耗时间最小最大值等


    统计的图形化表示


    YoungGC,FullGC不同消耗时间上次数的分布图,勾选可以显示youngGC或fullGC单独的分布情况


    整个时间过程详细的gc情况,可以对整个过程进行剖析

    (2)GCLogViewer


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


    点击run.bat运行


    整个过程gc情况的趋势图,还显示了gc类型,吞吐量,平均gc频率,内存变化趋势等
    Tools里还能比较不同gc日志


    (3)HPjmeter


    获取地址 http://www.hp.com/go/java参考文档 http://www.javaperformancetuning.com/tools/hpjtune/index.shtml


    工具很强大,但只能打开由以下参数生成的GC log, -verbose:gc -Xloggc:gc.log,添加其他参数生成的gc.log无法打开。

    (4)GCViewer

    http://www.tagtraum.com/gcviewer.html
    这个工具用的挺多的,但只能在JDK1.5以下的版本中运行,1.6以后没有对应。

    (5)garbagecat

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

    其它监控方法
    Jvisualvm动态分析jvm内存情况和gc情况,插件:visualGC


    jvisualvm还可以heapdump出对应hprof文件(默认存放路径:监控的服务器 /tmp下),利用相关工具,比如HPjmeter可以对其进行分析
    grep Full gc.log粗略观察FullGC发生频率
    jstat –gcutil [pid] [intervel] [count]
    jmap -histo pid可以观测对象的个数和占用空间jmap -heap pid可以观测jvm配置参数,堆内存各区使用情况
    jprofiler,jmap dump出来用MAT分析

    相关文章

      网友评论

          本文标题:在Tomcat中开启JVM GC日志收集

          本文链接:https://www.haomeiwen.com/subject/egtkqxtx.html