在生产Java服务器中打开GC日志记录是常见的做法吗?
我看到在一些地方[1]人们开始在生产服务器(任务关键型)中进行GC日志记录,例如: 现在是否推荐生产环境中的实践 更新:我包含了一个来自Oracle的链接[2],该链接还建议监视生产服务器上的GC 资料来源: [1] [2] 当然不是在生产Java服务器中打开GC日志记录是常见的做法吗?,java,jakarta-ee,garbage-collection,jvm,Java,Jakarta Ee,Garbage Collection,Jvm,我看到在一些地方[1]人们开始在生产服务器(任务关键型)中进行GC日志记录,例如: 现在是否推荐生产环境中的实践 更新:我包含了一个来自Oracle的链接[2],该链接还建议监视生产服务器上的GC 资料来源: [1] [2] 当然不是 只有在QA系统中出现无法重现的问题时,才能以这种方式加载prod服务器。即使只是在短时间内收集数据,然后返回到正常的“精益”模式。是的,这是一种常见做法。这是经常极力推荐的,我在下面给出了示例和参考 为什么GC日志记录适用于生产Java服务器: 最小开销-GC日志
只有在QA系统中出现无法重现的问题时,才能以这种方式加载prod服务器。即使只是在短时间内收集数据,然后返回到正常的“精益”模式。是的,这是一种常见做法。这是经常极力推荐的,我在下面给出了示例和参考 为什么GC日志记录适用于生产Java服务器:
- 例如,前JVM性能架构师、本书的合著者Charlie Hunt声称了这一点
- 所有运行的Java企业软件都运行启用了GC日志记录的生产服务器。这证实了日志记录的开销很低,而且发布基准测试结果的性能专家对日志记录路径进行了高度调整
我还没有看到它……我不知道这会告诉你什么,而不是……比如说,一个实际的日志框架。@Makoto一个“实际的日志框架”不会记录GC时间。是的,但我质疑这些信息的有效性。如果系统是任务关键型的,或者需要在较短的时间内运行,那么对导致较高GC时间的关键组件进行基准测试将更为有利。@Makoto-这取决于您试图实现的目标。如果您正在尝试调整GC。。。甚至监视它。。。那么,分析/基准测试就没用了。我担心他的观点是不正确的。JVM性能工程师和架构师经常推荐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 ...