cassandra - cassandra 中的 G1GC 垃圾收集
问题描述
我们正计划将 GC 从 CMS 移动到 G1GC 。如果我们更改为 G1GC ,那么从 dse 到 apache 仍然需要这些参数。使用 G1GC 时这些参数如何影响垃圾收集
-XX:ThreadPriorityPolicy=42
-XX:+HeapDumpOnOutOfMemoryError
-Xss256k
# Larger interned string table, for gossip's benefit (CASSANDRA-6410)
-XX:StringTableSize=1000003
-XX:+AlwaysPreTouch
# Disable biased locking as it does not benefit Cassandra.
-XX:-UseBiasedLocking
`# Enable thread-local allocation blocks and allow the JVM to automatically
-XX:+UseTLAB
-XX:+ResizeTLAB
-XX:+UseNUMA
-XX:+PerfDisableSharedMem
-Djava.net.preferIPv4Stack=true`
解决方案
这些在CMS和G1之间几乎没有区别。
TLAB
's 与 CMS 相同,它可以通过为每个线程提供一个缓冲区来提供帮助,它们可以在伊甸园空间中直接分配,这意味着线程安全分配没有争用或要求(快得多)。但是,如果您有很多活动线程(例如连接了超过 1000 个活动客户端的大型集群),因为每个线程缓冲区最终都会变小,并且随着不同线程在不同时间处于活动状态,调整大小变得不准确。此外,如果发生较大的插入,则分配将不适合缓冲区并最终分配到共享空间中。也就是说,使用 TLAB/resize 运行几乎总是更好。
UseBiasedLocking
也和 CMS 一样,没有太多同步,STW 暂停会影响事情。
UseNUMA
不适用于 g1 或 cms,仅适用于并行收集器。设置它什么都不做
PerfDisableSharedMem
牺牲您调试和诊断性能问题的能力,以换取在刷新 hsperfdata 时防止可能的暂停
preferIPv4Stack
不要使用ipv6
推荐阅读
- asp.net - 带有 Crystal 报表会话的 ASP.NET 网站不能在 iis 服务器 8 及更高版本中工作,但在 IIS 7 中工作
- powershell - 尝试使用 Powershell 删除仅包含一行内容的文件;获取空路径错误
- ios - 带有自定义单元格的 TableView 不会开始编辑
- asp.net - 试图从 .net 5 降级到 .net core 3.1,现在出现奇怪的错误
- django - django models.ImageField 不可重用
- r - R中的%in%函数,两个参数
- python - 使用另一个类中的类对象来查找两点之间的距离
- swift - 如何获取滑动手势的位置/索引路径?
- node.js - ReferenceError:初始化前无法访问“模型”
- c - extern 关键字似乎没有任何作用