G1 GC 单个、非常长的年轻 GC 发生且 ParallelGCThreads=1

2024-04-08

I set ParallelGCThreads=1并使用G1 GC,所有其他JVM设置为默认设置。我跑PageRank在 Spark-1.5.1 上,有两个 EC2 节点,每个节点有 100 GB 堆。

我的堆使用情况图如下(红色区域:年轻代,黑色区域:老年代)。所有的年轻GC都很小,突然来了一个年轻GC,收集了60GB,然后年轻GC又变小了。我的 GC 日志显示没有混合 GC、没有完整 GC、1 个并发标记和数十个年轻 GC。我想知道为什么会发生巨大的年轻GC?

下面是我的 GC 日志的一部分。巨大的年轻GC是带有“Heap: 84.1G”的GC

2015-12-30T06:59:02.488+0000: 245.088: [GC pause (young) 245.089: [G1Ergonomics (CSet Construction) start choosing CSet, _pending_cards: 1727, predicted base time: 24.64 ms, remaining time: 175.36 ms, target pause time: 200.00 ms]
 245.089: [G1Ergonomics (CSet Construction) add young regions to CSet, eden: 206 regions, survivors: 3 regions, predicted young region time: 148.87 ms]
 245.089: [G1Ergonomics (CSet Construction) finish choosing CSet, eden: 206 regions, survivors: 3 regions, old: 0 regions, predicted pause time: 173.51 ms, target pause time: 200.00 ms]
2015-12-30T06:59:02.531+0000: 245.131: [SoftReference, 0 refs, 0.0000520 secs]2015-12-30T06:59:02.531+0000: 245.131: [WeakReference, 21 refs, 0.0000160 secs]2015-12-30T06:59:02.531+0000: 245.131: [FinalReference, 9759 refs, 0.0084720 secs]2015-12-30T06:59:02.539+0000: 245.140: [PhantomReference, 0 refs, 14 refs, 0.0000190 secs]2015-12-30T06:59:02.539+0000: 245.140: [JNI Weak Reference, 0.0000130 secs] 245.142: [G1Ergonomics (Heap Sizing) attempt heap expansion, reason: recent GC overhead higher than threshold after GC, recent GC overhead: 12.51 %, threshold: 10.00 %, uncommitted: 0 bytes, calculated expansion amount: 0 bytes (20.00 %)]
, 0.0534140 secs]
   [Parallel Time: 42.3 ms, GC Workers: 1]
      [GC Worker Start (ms):  245088.6]
      [Ext Root Scanning (ms):  14.4]
      [Update RS (ms):  1.9]
         [Processed Buffers:  34]
      [Scan RS (ms):  0.4]
      [Code Root Scanning (ms):  0.0]
      [Object Copy (ms):  25.5]
      [Termination (ms):  0.0]
      [GC Worker Other (ms):  0.0]
      [GC Worker Total (ms):  42.3]
      [GC Worker End (ms):  245130.9]
   [Code Root Fixup: 0.0 ms]
   [Code Root Migration: 0.0 ms]
   [Clear CT: 1.6 ms]
   [Other: 9.5 ms]
      [Choose CSet: 0.0 ms]
      [Ref Proc: 8.6 ms]
      [Ref Enq: 0.2 ms]
      [Free CSet: 0.4 ms]
   [Eden: 6592.0M(6592.0M)->0.0B(58.8G) Survivors: 96.0M->128.0M Heap: 30.6G(100.0G)->24.2G(100.0G)]
 [Times: user=0.05 sys=0.00, real=0.06 secs] 
2015-12-30T06:59:43.451+0000: 286.051: [GC pause (young) 286.054: [G1Ergonomics (CSet Construction) start choosing CSet, _pending_cards: 392599, predicted base time: 367.03 ms, remaining time: 0.00 ms, target pause time: 200.00 ms]
 286.054: [G1Ergonomics (CSet Construction) add young regions to CSet, eden: 1884 regions, survivors: 4 regions, predicted young region time: 150.18 ms]
 286.054: [G1Ergonomics (CSet Construction) finish choosing CSet, eden: 1884 regions, survivors: 4 regions, old: 0 regions, predicted pause time: 517.21 ms, target pause time: 200.00 ms]
2015-12-30T06:59:47.767+0000: 290.368: [SoftReference, 0 refs, 0.0000570 secs]2015-12-30T06:59:47.768+0000: 290.368: [WeakReference, 350 refs, 0.0000640 secs]2015-12-30T06:59:47.768+0000: 290.368: [FinalReference, 99336 refs, 0.3781120 secs]2015-12-30T06:59:48.146+0000: 290.746: [PhantomReference, 0 refs, 1 refs, 0.0000290 secs]2015-12-30T06:59:48.146+0000: 290.746: [JNI Weak Reference, 0.0000140 secs] 290.767: [G1Ergonomics (Heap Sizing) attempt heap expansion, reason: recent GC overhead higher than threshold after GC, recent GC overhead: 11.74 %, threshold: 10.00 %, uncommitted: 0 bytes, calculated expansion amount: 0 bytes (20.00 %)]
, 4.7153740 secs]
   [Parallel Time: 4313.9 ms, GC Workers: 1]
      [GC Worker Start (ms):  286053.9]
      [Ext Root Scanning (ms):  15.2]
      [Update RS (ms):  86.3]
         [Processed Buffers:  1557]
      [Scan RS (ms):  4.1]
      [Code Root Scanning (ms):  0.2]
      [Object Copy (ms):  4208.1]
      [Termination (ms):  0.0]
      [GC Worker Other (ms):  0.0]
      [GC Worker Total (ms):  4313.9]
      [GC Worker End (ms):  290367.8]
   [Code Root Fixup: 0.0 ms]
   [Code Root Migration: 0.3 ms]
   [Clear CT: 15.1 ms]
   [Other: 386.0 ms]
      [Choose CSet: 0.0 ms]
      [Ref Proc: 378.4 ms]
      [Ref Enq: 1.7 ms]
      [Free CSet: 3.3 ms]
   [Eden: 58.9G(58.8G)->0.0B(3456.0M) Survivors: 128.0M->1664.0M Heap: 84.1G(100.0G)->26.7G(100.0G)]
 [Times: user=0.78 sys=3.94, real=4.71 secs] 

尝试堆扩展,原因:GC后最近的GC开销高于阈值,最近的GC开销:11.74%,阈值:10.00%

我的猜测是这正在推动 G1 的决定。您可以通过设置来放松它-XX:GCTimeRatio=4,这将允许它占用相对于应用程序时间的 20% 的 CPU 周期来进行 GC,而不是 10%。

如果那太多了,你应该

  • 允许它使用更多的 CPU 核心 - 这将更容易满足其暂停时间目标,这反过来又意味着它可以推迟收集更长时间,从而更容易满足吞吐量目标。
    是的,这确实意味着使用更多内核实际上可以使用更少的 CPU 周期。
  • 放宽暂停时间目标,因此必须减少收集频率
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

G1 GC 单个、非常长的年轻 GC 发生且 ParallelGCThreads=1 的相关文章

  • 如何将 Dataframe 列名称与 Scala 案例类属性相匹配?

    本示例中的 Spark sql 列名来自case class Person case class Person name String age Int val people RDD Person An RDD of case class o
  • 我需要在 Spring 中检查每个控制器中的有效会话吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 假设在 Spring Mvc 的 Web 应用程序中 我们是否需要检查每个控制器或 jsps 中的有效会话 我该如何解决 MVC 中的
  • 我可以在没有 Hadoop 的情况下使用 Spark 作为开发环境吗?

    我对大数据和相关领域的概念非常陌生 如果我犯了一些错误或拼写错误 我很抱歉 我想了解阿帕奇火花 http spark apache org 并使用它仅在我的电脑中 在开发 测试环境中 由于Hadoop包含HDFS Hadoop分布式文件系统
  • AES 加密 Java/plsql

    我需要在Java和plsql DBMS CRYPTO for Oracle 10g 上实现相同的加密 解密应用程序 两种实现都工作正常 但这里的问题是我对相同纯文本的加密得到了不同的输出 下面是用于加密 解密过程的代码 Java 和 PLS
  • JNI 不满意链接错误

    我想创建一个简单的 JNI 层 我使用Visual studio 2008创建了一个dll Win 32控制台应用程序项目类型 带有DLL作为选项 当我调用本机方法时 出现此异常 Exception occurred during even
  • IntelliJ IDEA 创建的 JAR 文件无法运行

    我在 IntelliJ 中编写了一个跨越几个类的程序 当我在 IDE 中测试它时它运行良好 但是 每当我按照教程将项目制作成 jar 可执行文件时 它就不会运行 双击 out 文件夹中的文件时 该文件不会运行 并显示 无法启动 Java J
  • Java 页面爬行和解析之 Crawler4j 与 Jsoup

    我想获取页面的内容并提取其中的特定部分 据我所知 此类任务至少有两种解决方案 爬虫4j https github com yasserg crawler4j and Jsoup http jsoup org 它们都能够检索页面的内容并提取其
  • hibernate总是自己删除表中的所有数据

    您好 我正在开发一个 spring mvc 应用程序 它使用 hibernate 连接到存储文件的 mysql 数据库 我有两个方法 一个方法添加我选择的特定文件路径中的所有文件 另一种方法调用查询以返回从 mysql 存储的文件列表 问题
  • 请求位置更新参数

    这就是 requestLocationUpdates 的样子 我使用它的方式 requestLocationUpdates String provider long minTime float minDistance LocationLis
  • 无法理解 Java 地图条目集

    我正在看一个 java 刽子手游戏 https github com leleah EvilHangman blob master EvilHangman java https github com leleah EvilHangman b
  • 序列化对象以进行单元测试

    假设在单元测试中我需要一个对象 其中所有 50 个字段都设置了一些值 我不想手动设置所有这些字段 因为这需要时间而且很烦人 不知何故 我需要获得一个实例 其中所有字段都由一些非空值初始化 我有一个想法 如果我要调试一些代码 在某个时候我会得
  • 检查 Android 手机上的方向

    如何查看Android手机是横屏还是竖屏 当前配置用于确定要检索的资源 可从资源中获取Configuration object getResources getConfiguration orientation 您可以通过查看其值来检查方向
  • 从 android 简单上传到 S3

    我在网上搜索了从 android 上传简单文件到 s3 的方法 但找不到任何有效的方法 我认为这是因为缺乏具体步骤 1 https mobile awsblog com post Tx1V588RKX5XPQB TransferManage
  • InvalidRequestException(为什么:empid 如果包含 Equal,则不能被多个关系限制)

    这是关于我从 Apache Spark 查询 Cassandra 时遇到的问题 Spark 的正常查询工作正常 没有任何问题 但是当我使用关键条件进行查询时 出现以下错误 最初 我尝试查询复合键列族 它也给出了与下面相同的问题 由以下原因引
  • 将 Long 转换为 DateTime 从 C# 日期到 Java 日期

    我一直尝试用Java读取二进制文件 而二进制文件是用C 编写的 其中一些数据包含日期时间数据 当 DateTime 数据写入文件 以二进制形式 时 它使用DateTime ToBinary on C 为了读取 DateTime 数据 它将首
  • 数量重新分配逻辑 - 具有外部数据集的 MapGroups

    我正在研究一种复杂的逻辑 需要将数量从一个数据集重新分配到另一个数据集 在例子中我们有Owner and Invoice 我们需要从数量中减去Invoice准确地Owner匹配 在给定汽车的给定邮政编码处 减去的数量需要重新分配回同一辆车出
  • 如何配置eclipse以保持这种代码格式?

    以下代码来自 playframework 2 0 的示例 Display the dashboard public static Result index return ok dashboard render Project findInv
  • Springs 元素“beans”不能具有字符 [children],因为该类型的内容类型是仅元素

    我在 stackoverflow 中搜索了一些页面来解决这个问题 确实遵循了一些正确的答案 但不起作用 我是春天的新人 对不起 这是我的调度程序 servlet
  • java迭代器内部是如何工作的? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个员工列表 List
  • JAVA - 如何从扫描仪读取文件中检测到“\n”字符

    第一次海报 我在读取文本文件的扫描仪中读取返回字符时遇到问题 正在读取的文本文件如下所示 test txt start 2 0 30 30 1 1 90 30 0 test txt end 第一行 2 表示两个点 第二行 位置索引 0 xp

随机推荐

  • Maven:子模块无法继承父模块的依赖项

    这是我的父母 pom
  • EditText 视图返回 null

    我有两个活动 一个 主页 片段活动和一个普通的 选项 活动 在我的主页片段活动中 我尝试使用从选项活动检索的数据来更新 EditText 视图 不幸的是 由于某种原因 片段活动无法检测到我的视图以进行更新 我不太清楚为什么 这是我的功能 u
  • Android:可以获得自定义 R.id

    是否可以让 android 给我一个自定义 id 例如 如果我已经在 xml 中定义 R id some layout R drawable some drawable 有没有这样的功能 R custom id a custom id 这样
  • 如何使用 CSS 和 Javascript 缩小 HTML?

    我有一个 html 文档 其中包含 CSS 和 Javascript 无外部文件 有没有一些在线工具可以minify文档和Javascript 的占用空间非常小 我看到许多脚本有点不可读 其中所有变量和函数名称都被替换为单字母名称等 请指教
  • Java 错误:找到接口...但需要类

    我的代码中出现了一个奇怪的运行时错误 Found interface SomeInterface but class was expected 怎么会发生这种事呢 接口如何实例化 Update 回应一些答案 我正在针对同一组库进行编译和运行
  • Int 不符合协议“StringLiteralConvertible”

    我试图在天气应用程序中解析 json 但遇到了一个我无法克服的障碍 我确实在以下代码中收到错误 类型 int 不符合协议 StringLiteralConvertible 我尝试过转换 jsonResult main 但这确实给出了错误 后
  • 重命名列表框中的项目

    我想重命名列表框中选定的项目 我怎样才能做到这一点 谢谢 编辑 几年后重新审视这个问题 以下是根据您使用的 UI 框架执行此操作的方法 这假设您想要更改所选文本 ASP Net Web 表单 protected void ChangeLis
  • 忽略绝对定位视图上的触摸以允许在底层 ScrollView 上滚动

    我有一个绝对位于 ScrollView 上方的视图 即使我在顶视图内开始触摸 我也希望能够滚动 我尝试过设置onStartShouldSetResponder and onMoveShouldSetResponder在查看到false但它仍
  • 如何监控 TCP 连接的 cwnd 和 ssthresh 值? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我希望在通过套接字连接发送或接收数据包时确定这些值 有没有现有的工具可以做到这一点 The ss http linux die net m
  • 重新渲染图像视图之间出现白色闪光

    不确定这是否是一个大问题 但我不完全确定是否存在解决方案 创建幻灯片样式元素时 点击后图像会更改为另一个图像 已使用 React Native 的图像预取器预取 当屏幕重新渲染时会出现白色闪烁 我认为 这个问题有具体的解决办法吗 我不明白像
  • 检查Android上是否已经创建数据库

    Android 中如何知道数据库是否已创建 有人有例子吗 you will find the data in DDMS gt 数据 数据 your package name database your database name 看第二张图
  • 如何以编程方式添加容器视图

    容器视图可以通过界面编辑器轻松添加到故事板中 添加后 容器视图具有占位符视图 嵌入转场和 子 视图控制器 但是 我无法找到以编程方式添加容器视图的方法 事实上 我什至找不到一个名为UIContainerView or so Containe
  • 如何在 Spring Boot 中全局配置`@DateTimeFormat`模式?

    在我的 Spring Boot 应用程序中 我有一些控制器接受日期作为查询参数 RestController public class MyController GetMapping public ResponseEntity
  • 具有 302 重定向的 Cookie 域

    假设我有两台服务器 a http server a com b http server b com Server a有以下端点 1 方法 GET path 2 方法 GET path do something 当发出 http get 请求
  • Google 地图 V3 用户添加标记

    我需要一些代码 允许用户将自己的标记添加到我的地图中 有人有例子吗 Thanks var initialLocation var siberia new google maps LatLng 60 105 var newyork new g
  • 为什么 Symfony Monolog 发送错误额外邮件

    我有一个 Symfony 5 中的应用程序和一个带有 Monolog 的错误报告系统 出现的问题是 当他们向我发送一封有错误的电子邮件时 我还会收到另一封包含以下内容的电子邮件 DEBUG Message Email transport S
  • locationManager:didFailWithError: 如果用户定位服务关闭,则不会调用

    从文档中位置管理器 didFailWithError http developer apple com library ios documentation CoreLocation Reference CLLocationManagerDe
  • 尝试在 docker 容器内 pip install shapely 时出现 OSError

    无法找到库 geos c 或加载其任何变体 libgeos c so 1 libgeos c so 使用 python 3 5 1 图像我尝试运行一个容器 其中包括它安装在requirements txt中的其他内容 当 docker 容器
  • 以编程方式创建 WooCommerce 订单时设置外部订单 ID

    我一直在使用一些记录良好的代码以编程方式创建 Woocommerce 订单 工作得很好 参考这里 https quadlayers com add products woocommerce https quadlayers com add
  • G1 GC 单个、非常长的年轻 GC 发生且 ParallelGCThreads=1

    I set ParallelGCThreads 1并使用G1 GC 所有其他JVM设置为默认设置 我跑PageRank在 Spark 1 5 1 上 有两个 EC2 节点 每个节点有 100 GB 堆 我的堆使用情况图如下 红色区域 年轻代