【问题标题】:how to find application suspension time from GC log files如何从 GC 日志文件中查找应用程序挂起时间
【发布时间】:2013-09-11 13:40:59
【问题描述】:

我是垃圾收集的新手,请有人帮助我得到以下问题的答案并给出明确的解释

我想从不同 JVM 的 GC 日志文件中找到应用程序挂起时间挂起计数

  • jRockit
  • IBM

不同的版本。

A. 对于 SUN,我使用的是 JVM 选项

-Xloggc:gc.log -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+UseParNewGC -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode

B. 对于 JRockit,我使用的是 JVM 选项

-Xms100m -Xmx100m -Xns50m -Xss200k -Xgc:genconpar -Xverbose:gc -Xverboselog:gc_jrockit.log

我的问题

Q1.什么是应用程序的暂停时间以及它发生的原因。

Q2。如何通过查看日志说发生了暂停。

Q3.一个应用的挂起时间是否=GC时间之和。

例如:

2013-09-06T23:35:23.382-0700: [GC 150.505: [ParNew 所需的幸存者大小 50331648 字节,新阈值 2(最大 15) - 年龄 1:28731664 字节,总共 28731664 - 年龄 2:28248376 字节,总共 56980040 : 688128K->98304K(688128K), 0.2166700 secs] 697655K->163736K(10387456K), 0.2167900 secs] [Times: user=0.44 sys=0.04, real=0.22 secs]

2013-09-06T23:35:28.044-0700:155.167:[GC 155.167:[ParNew 所需的幸存者大小 50331648 字节,新阈值 15(最大 15) - 年龄 1:22333512 字节,总共 22333512 - 年龄 2:27468336 字节,总共 49801848 : 688128K->71707K(688128K), 0.0737140 secs] 753560K->164731K(10387456K), 0.0738410 secs] [Times: user=0.30 sys=0.02, real=0.07 secs]

suspensionTime = 0.2167900 秒 + 0.0738410 秒

我。如果是,我是否需要为每次 gc 发生添加所有时间

二。如果没有请您详细解释那些我们认为发生了暂停的日志,而那些不考虑不同收集器的日志

Q4.我们可以说 GC 时间“0.2167900 , 0.0738410”等于 GC Pauses ie;TotalGCPause = 0.2167900 + 0.0738410

Q5.我们是否可以仅使用上述标志来计算暂停时间,或者我们需要包含额外的标志,例如 -XX:+PrintGCApplicationStoppedTime 代表 SUN

Q6. 我看到一个工具 dyna 跟踪它计算挂起时间和计数 SUN 而不使用标志 -XX:+PrintGCApplicationStoppedTime

【问题讨论】:

    标签: garbage-collection jvm


    【解决方案1】:

    如果您想获得有关应用程序因 GC 活动而停止的时间量的最准确信息,您应该使用 -XX:+PrintGCApplicationStoppedTime

    -XX:+PrintGCApplicationStoppedTime 支持打印由于内部 HotSpot VM 操作(GC 和安全点操作)而导致的应用程序线程停止的时间量

    但是,对于实际的日常使用,GC 日志提供的信息就足够了。您可以使用问题 3. 中描述的方法来确定在 GC 中花费的时间。

    【讨论】:

    • 确实 GC 中的总 TimeSpent = 应用程序的暂停时间,但一些收集器使用应用程序线程执行 GC,在这种情况下会发生什么
    • 总 GC 时间 = GC 日志中列出的所有 GC 事件的总和。尝试更具体地说明“一些收集器使用应用程序线程执行 GC”。
    • 对于 CMS,它只在两个“pahses 标记和备注”中暂停应用程序,但 GC 也在剩余阶段执行,我是否考虑 应用程序停止时间或暂停时间 = 总 GC 时间所有 GC 事件的总和 + CMS 标记时间 + CMS 标记时间 = 应用程序暂停时间
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 2015-12-12
    相关资源
    最近更新 更多