如何让 G1 打印更多日志详细信息?

2024-04-26

我正在测试基于 Jetty 的 API 与基于 Netty 的 API。实验中唯一的区别是我使用哪个 API(相同的应用程序、相同的服务器、相同的内存配置、相同的负载等),我使用基于 Netty 的 API 时会得到更长的 GC 暂停。大多数情况下,暂停时间低于一毫秒,但在平稳运行几天后,每隔 12-24 小时我就会看到 4-6 秒的暂停,而基于 Jetty 的 API 不会出现这种情况。

每当发生这种情况时,关于 G1 正在做什么导致其发出 STW 的信息都非常少,请注意此处的第二条暂停消息:

2016-02-23T05:22:27.709+0000: 66360.282: Total time for which application threads were stopped: 0.0319639 seconds, Stopping threads took: 0.0000716 seconds
2016-02-23T05:22:35.642+0000: 66368.215: Total time for which application threads were stopped: 6.9705594 seconds, Stopping threads took: 0.0000737 seconds
2016-02-23T05:22:35.673+0000: 66368.246: Total time for which application threads were stopped: 0.0048374 seconds, Stopping threads took: 0.0040574 seconds 

我的 GC 选项是:

-XX:+UseG1GC 
-XX:+G1SummarizeConcMark 
-XX:+G1SummarizeRSetStats 
-XX:+PrintAdaptiveSizePolicy 
-XX:+PrintGC 
-XX:+PrintGCApplicationStoppedTime 
-XX:+PrintGCDateStamps 
-XX:+PrintGCDetails 
-XX:+PrintGCTimeStamps 
-XX:+DisableExplicitGC 
-XX:InitialHeapSize=12884901888 
-XX:MaxHeapSize=12884901888 

并且,作为参考,我的虚拟机选项是:

-XX:+AlwaysPreTouch 
-XX:+DebugNonSafepoints 
-XX:+FlightRecorder 
-XX:FlightRecorderOptions=stackdepth=500 
-XX:-OmitStackTraceInFastThrow 
-XX:+TrustFinalNonStaticFields 
-XX:+UnlockCommercialFeatures 
-XX:+UnlockDiagnosticVMOptions 
-XX:+UnlockExperimentalVMOptions 
-XX:+UseCompressedClassPointers 
-XX:+UseCompressedOops 

我怎样才能知道whyG1让世界停止在2016-02-23T05:22:35.642?


并非所有 STW 暂停 - 用于触发它们的机制称为安全点 http://blog.ragozin.info/2012/10/safepoints-in-hotspot-jvm.html- 由GC引起,使用-XX:+PrintSafepointStatistics –XX:PrintSafepointStatisticsCount=1打印其他安全点原因。

第二,if暂停是由 GC 引起的,那么您粘贴的行本身不包含原因,但 GC 日志中的相邻块应该包含原因,例如[GC pause (G1 Evacuation Pause) (young), 0.0200285 secs]

此外,您可能还想监控磁盘 IO 延迟并将时间戳与安全点暂停相匹配。安全点期间发生的任何同步 IO 或分页会导致存储速度变慢,可能会导致整个安全点停顿。放置日志文件和/tmp在 tmpfs 或 SSD 上可能会有所帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让 G1 打印更多日志详细信息? 的相关文章

随机推荐

  • React Native - 从 package.json 到 android 构建清单的自动版本名称

    目前我有一个反应本机应用程序 我遇到的问题是在每次构建或提交时更新版本非常耗时 另外 我启用了 Sentry 因此每次构建时 某些构建都会获得相同的版本 因此某些崩溃很难确定它们来自何处 最后 手动更新版本很容易出错 如何设置我的构建以在每
  • 如何使用 f:validateRegex 仅允许数字

    我的输入应该只允许数字 我尝试添加
  • 调试 Three.js 中的低 FPS

    我正在处理 Three js WebGL 场景 当我缩小时 我注意到 60 FPS 以便所有观察结果 约 20 000 个三角形 都在视图中 但当我放大时 FPS 非常低 因此只有一个小三角形的子集在视野中 我想弄清楚是什么导致了这种差异
  • 从注册表中检索 Windows 密码提示

    我一直在尝试以编程方式提取 Windows 7 的 Windows 登录密码提示 我发现可以从注册表中的以下位置检索它HKLM SAM SAM Domains Account Users 用户密钥 UserPasswordHint但是 我不
  • C# - 从另一个字符串中删除第一次出现的子字符串的最简单方法

    我需要从另一个字符串中删除第一个 并且仅第一个 出现的字符串 这是替换字符串的示例 Iteration This ProjectName Iteration Release1 Iteration1 会变成这样 ProjectName Rel
  • 在 .NET 中,mystring.Length == 0 或 mystring == string.Empty 哪个最好? [复制]

    这个问题在这里已经有答案了 可能的重复 检查字符串内容 字符串长度与空字符串 https stackoverflow com questions 10230 checking for string contents string lengt
  • 带有编辑器框架的 GWT 验证器

    有没有人意识到编辑器和 jsr 303 验证如何与 GWT 2 3 一起工作 未来 验证 API 已添加到 gwt sdk 但我无法使用编辑器框架验证实体 无论 我确实从来没有从客户端或服务器端抛出错误 这是一个代码片段 public cl
  • 根据给定分布对数据帧进行采样

    如何根据给定的类 标签分布值对 pandas 数据框或 graphlab sframe 进行采样 例如 我想对具有标签 类列的数据框进行采样以选择行 以便平等地获取每个类标签 从而具有相似的频率对于每个类标签对应一个均匀分布的类标签 或者最
  • Google 图表 - “缺少请求 ID 的查询:0”

    仅当我尝试将两个图表放在同一页面上时才会出现此错误 如果这两个图表是页面上唯一的图表 则它们可以完美地工作 在我添加第二个的那一刻 仅加载第一个 并且出现 缺少请求 id 的查询 0 错误 这是我的图表 js 文件 function dra
  • 如何获取子进程的返回值?

    程序计算从 1 到 N 的数字之和 子进程计算偶数之和 父进程计算奇数之和 我想在父进程中获取子进程的返回值 我怎么做 include
  • 如何从 Twig 中的多维数组中获取值?

    我的数组 strs key id 的 var dump 给出以下结果 array 2 0 gt array 4 8259 gt string 8260 ouvrir 1 8260 gt string 8261 fichier 2 8261
  • 使用 Json.net 解析 JSON

    我正在尝试使用 JSon Net 库解析一些 JSON 该文档似乎有点稀疏 我对如何完成我需要的内容感到困惑 这是我需要解析的 JSON 格式 displayFieldName OBJECT NAME fieldAliases OBJECT
  • 在其他包中使用 main.go 中声明的结构

    我有一个结构体声明于main go如下所示 type Organization struct ID string json id Count int json count node count 我有一个名为configuration并有这样
  • 当鼠标悬停在图标上时,字形会改变颜色

    我怎样才能让它工作 这样当我将鼠标悬停在 li gt a 时 它也会改变我的字形图标上的颜色 我在下面列出了我的 html 和我的内容tryed在CSS中做 但这只会改变它if我将鼠标悬停在字形图标而不是 a 上 和yes我也尝试在我的 a
  • 如何使用 PDF.js 显示 PDF(以 Base64 存储)中的所有页面?

    我正在使用以下脚本使用 PDF js 显示 PDF 但它在画布上没有显示任何内容 你能告诉我我哪里出了问题吗 我尝试在线查找文档 但找不到任何帮助 Model B 是 base64 字符串
  • wpf xceed工具包水印文本框使水印显示直到第一次输入

    默认行为是当文本框获得焦点时水印消失 我想让水印内容仅在用户键入第一个字符时消失 然后在清除文本后重新出现 有人有好的方法来实现这一点吗 我已经为你调整了默认样式 现在 水印默认显示为 稍暗 默认系统 非活动文本 颜色 并且当水印接收焦点但
  • 使用 @Valid 进行 Spring 验证

    我正在验证传入属性 但验证器甚至捕获未注释的其他页面 Valid RequestMapping value showMatches spr method RequestMethod GET public ModelAndView showM
  • 如何从存储库中删除 Sonatype Nexus OSS(3) 组件

    这是我的第一个问题 我尽力做到最好 如果有什么问题 请简单地告诉我 我会纠正自己 我是 Sonatypes Nexus 3 OSS 的新手 我找不到从我的存储库中删除组件的方法 我的存储库中的一个包已变得无用 现在我想将其删除 我已经删除了
  • spring data neo4j 5 - 没有名为“sessionFactory”的bean可用

    我正在使用 spring data neo4j 5 0 7 RELEASE 和 spring 5 0 6 RELEASE 使用文档中的配置https github com spring projects spring data neo4j
  • 如何让 G1 打印更多日志详细信息?

    我正在测试基于 Jetty 的 API 与基于 Netty 的 API 实验中唯一的区别是我使用哪个 API 相同的应用程序 相同的服务器 相同的内存配置 相同的负载等 我使用基于 Netty 的 API 时会得到更长的 GC 暂停 大多数