Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在生产Java服务器中打开GC日志记录是常见的做法吗?_Java_Jakarta Ee_Garbage Collection_Jvm - Fatal编程技术网

在生产Java服务器中打开GC日志记录是常见的做法吗?

在生产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日志

我看到在一些地方[1]人们开始在生产服务器(任务关键型)中进行GC日志记录,例如:

现在是否推荐生产环境中的实践

更新:我包含了一个来自Oracle的链接[2],该链接还建议监视生产服务器上的GC

资料来源:

[1]

[2] 当然不是


只有在QA系统中出现无法重现的问题时,才能以这种方式加载prod服务器。即使只是在短时间内收集数据,然后返回到正常的“精益”模式。

是的,这是一种常见做法。这是经常极力推荐的,我在下面给出了示例和参考

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

  • 最小开销-GC日志记录对整个系统性能具有最小开销

    • 例如,前JVM性能架构师、本书的合著者Charlie Hunt声称了这一点
    • 所有运行的Java企业软件都运行启用了GC日志记录的生产服务器。这证实了日志记录的开销很低,而且发布基准测试结果的性能专家对日志记录路径进行了高度调整
  • 长期日志记录对于分析应用程序性能至关重要。必须始终启用GC日志记录,以便管理员能够观察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 ...