21

我在几个地方看到 [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 ...

这些天是否推荐生产环境中的做法?

更新:我已经包含了来自 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

4

2 回答 2

55

的,这是一种常见的做法。这通常是强烈推荐的,我在下面给出示例和参考。

为什么 GC 日志记录适用于生产 Java 服务器:

  1. 最小开销- GC 日志记录对整体系统性能 的开销最小。

  2. 长期日志记录对于分析应用程序性能绝对至关重要。必须始终启用 GC 日志记录,以便管理员能够观察 GC 行为并相应地调整应用程序。

于 2013-03-10T07:07:39.690 回答
-4

当然不。

如果存在无法在您的 QA 系统上重现的问题,您只会以这种方式加载 prod 服务器。即便如此,也只能在短时间内收集数据,然后恢复正常的“精益”模式。

于 2013-03-09T06:40:48.007 回答