它是常见的做法在生产中的Java服务器开启GC日志?(Is it common practice t

2019-08-17 10:45发布

我在一些地方看到[1]人开始在生产服务器上的日志GC(关键任务),如

java -server -Xms1024m -Xmx1024m -XX:NewSize=256m \
     -XX:MaxNewSize=256m \
     -XX:+UseConcMarkSweepGC \
     -XX:CMSInitiatingOccupancyFraction=70
     -XX:+PrintGCDetails \
     -XX:+PrintGCDateStamps \
     -XX:+PrintTenuringDistribution \
     -Xloggc:logs/gc.log \
     -Djava.awt.headless=true
     -Dcom.sun.management.jmxremote -classpath ...

它是在生产ENV推荐的做法,这些天?

更新 :我已经包括从Oracle的链接[2]也表明监测GC在生产服务器上。

资料来源:

[1] https://serverfault.com/questions/121490/java-opts-xxprintgcdetails-affect-on-performance

[2] http://docs.oracle.com/cd/E24290_01/coh.371/e22838/deploy_checklist.htm#CHHFADDF

Answer 1:

是的 ,这是一种常见的做法。 这通常极力推荐 ,我给的例子并参考下面。

为什么GC日志记录是良好的生产服务器运行Java:

  1. 最小的开销 - GC的记录具有最小开销系统的整体性能。

    • 这是声称如查理·亨特,前JVM性能架构师和共同作者的Java性能一书中 。
    • 所有的世界纪录SPEC基准测试运行Java企业软件正在运行的生产服务器与GC启用日志记录。 这证实了记录具有低开销,还可以为日志路径高度的服务表现专家发布的基准测试结果调整。
  2. 长期的记录绝对关键应用程序性能的分析。 该GC日志必须使所有的时间,以便管理员能够相应地观察到GC的行为和调整应用程序。



Answer 2:

当然不。

如果有可能不是你的质量保证体系上重现的问题,你会只加载督促服务器以这种方式。 即使那么只有在短期内收集数据,然后返回到正常的“精益”模式。



文章来源: Is it common practice to turn on GC logging in production Java server?