Cassandra 和 G1 垃圾收集器停止世界事件 (STW)

标签 cassandra garbage-collection cassandra-3.0 g1gc

我们有一个 6 节点 Cassandra 集群,利用率很高。我们一直在处理大量垃圾收集器停止世界事件,这在我们的节点中可能需要长达 50 秒的时间,同时 Cassandra 节点没有响应,甚至不接受新的登录。

额外详细信息:

  • Cassandra 版本:3.11
  • 堆大小 = 12 GB
  • 我们使用默认设置的 G1 垃圾收集器
  • 节点大小:4 个 CPU 28 GB RAM
  • G1 GC 行为在所有节点上都是相同的。

任何帮助将不胜感激!

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here


编辑1:

检查对象创建统计信息,它看起来一点也不健康。

enter image description here


编辑2:

我尝试使用Chris Lohfink建议的设置,这是 GC 报告:

使用 CMS 建议的设置 http://gceasy.io/my-gc-report.jsp?p=c2hhcmVkLzIwMTcvMTAvOC8tLWdjLmxvZy4wLmN1cnJlbnQtLTE5LTAtNDk=

使用 G1 建议的设置 http://gceasy.io/my-gc-report.jsp?p=c2hhcmVkLzIwMTcvMTAvOC8tLWdjLmxvZy4wLmN1cnJlbnQtLTE5LTExLTE3

行为基本保持不变:

  1. 老一代开始填满。
  2. 如果没有完整的 GC 和 STW 事件,GC 就无法正确清理它。
  3. 完整 GC 开始花费更长时间,直到节点完全无响应。

我将尽快获取最大分区大小和每次读取的逻辑删除的 cfstats 输出,并再次编辑帖子。

最佳答案

您考虑过使用 Zing 吗?像这样的 Cassandra 情况是一个典型的用例,因为 Zing 从根本上消除了 Cassandra 节点和集群中所有与 GC 相关的故障。

您可以在我最近的 JavaOne 演讲“理解 GC”( https://www.slideshare.net/howarddgreen/understanding-gc-javaone-2017 ) 中看到有关如何/为何的一些详细信息。或者直接跳到幻灯片 56-60 了解 Cassandra 特定的结果。

关于Cassandra 和 G1 垃圾收集器停止世界事件 (STW),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46568777/

相关文章:

cassandra - 基于 token 范围的分区键查询的性能?

arrays - ANSI C,垃圾收集器和函数环境数组,退出函数会取消数组吗?

cassandra - 多个 Cassandra 节点出现故障

linux - Cassandra 全局快照

java - 如何使用 Apache Flink 删除 Cassandra 中的行?

cassandra - 如果在 cassandra.yaml 中启用了 auto_snapshot,这些快照将在何时被删除

cassandra - 如何控制 Cassandra 中的高读取延迟?

hadoop - Hadoop Cassandra作业未读取所有输入行

language-agnostic - 为什么 RAII 和垃圾收集是互斥的?

c# - GC会收集一个带有函数指针的对象吗?