我们有一个6节点Cassandra集群正在大量使用。我们一直在使用垃圾收集器停止世界事件,在节点中可能需要长达50秒的时间,同时Cassandra节点没有响应,甚至不接受新的登录。Cassandra和G1垃圾收集器停止世界事件(STW)
额外的细节:
- 卡桑德拉版本:3.11
- 堆大小= 12 GB
- 我们使用G1垃圾收集器的默认设置
- 节点尺寸:4级的CPU 28 GB RAM
- G1 GC行为在所有节点上都是相同的。
任何帮助将非常感谢!
编辑1:
检查对象创建统计信息时,它看起来并不健康。
编辑2:
我试图通过克里斯Lohfink使用建议的设置,这里是GC报告:
使用CMS建议的设置 http://gceasy.io/my-gc-report.jsp?p=c2hhcmVkLzIwMTcvMTAvOC8tLWdjLmxvZy4wLmN1cnJlbnQtLTE5LTAtNDk=
使用G1建议的设置 http://gceasy.io/my-gc-report.jsp?p=c2hhcmVkLzIwMTcvMTAvOC8tLWdjLmxvZy4wLmN1cnJlbnQtLTE5LTExLTE3
行为保持基本一致:
- 老根开始填满。
- 如果没有完整的GC和STW事件,GC无法正确清理。
- 完整的GC开始花费更长时间,直到节点完全没有响应。
我将获得最大分区大小的cfstats输出和每读取最快分区的墓碑,并再次编辑帖子。
GC在增加后出现堆,所以无论您的应用程序是否只需要更多的内存,您有泄漏或cassandra的配置方式会以G1无法跟上的方式突发分配。这些案件无法单独与这些图表区分开来。 – the8472
什么是您当前的GC设置? –
您可以包含您的cfstats输出以获取最大分区大小和每次读取的墓碑吗?扫描墓碑并反序列化大分区索引是高客观分配率的常见原因。如果在不知道当前设置的情况下如何提高您的GC值 –