美文网首页
在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日志收集

    Tomcat环境变量设置 在tomcat的安装目录的bin目录下,编辑一个名为setenv.sh的文件(如果没有请...

  • jvm 垃圾回收详解

    JVM调试1、tomcat 设置JVM信息以及日志打印路径(特意设置较小 导致频繁GC)set "JAVA_OPT...

  • Java GC分析

    [TOC] 1、如何收集GC日志 1.1、 配置JVM启动参数: 1.2、 GC相关启动参数说明 1.2.1、简单...

  • JVM - GC日志

    JVM - GC日志 -XX:+PrintGC 输出GC日志 -XX:+PrintGCDetails 输出GC的详...

  • JVM GC 日志详解

    JVM GC 日志详解 本文采用的JDK版本: 一、GC 日志参数 设置JVM GC格式日志的主要参数包括如下8个...

  • idea 项目启动慢优化

    在 VM options 中加入jvm参数,重启 查看日志中的GC 次数,和GC原因,不断调整,最终full GC...

  • HotSpot JVM GC收集器学习总结

    HotSpot JVM中GC收集器学习总结:分代回收 + 收集算法 1. GC收集器(Overview) 2. C...

  • 简单谈谈JVM中的GC(中)

    书接上文,在了解JVM的分代模型后,接着来简单聊聊JVM中GC算法和不同的GC收集器【求关注】 GC回收算法 一个...

  • 详解GC日志参数

    本系列的最后一部分是有关垃圾收集(GC)日志的JVM参数。GC日志是一个很重要的工具,它准确记录了每一次的GC的执...

  • JVM系列 GC日志的配置和分析

    GC日志的生成 通过在应用启动的时候,配置jvm参数来实现GC日志的输出 GC日志参数设置 可以参照这个设置在 c...

网友评论

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

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