我们正计划将 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
与 CMS 相同,它可以通过为每个线程提供一个缓冲区来提供帮助,它们可以在 eden 空间中直接分配该缓冲区,这意味着没有线程安全分配的争用或要求(要快得多)。但是,如果您有很多事件线程(例如,连接了 1000 个以上事件客户端的大型集群),由于每个线程缓冲区最终都会变小,并且随着不同线程在不同时间变为事件状态,调整大小会变得不准确。此外,如果发生较大的插入,则分配将无法放入缓冲区,并且最终还是会在共享空间中进行分配。也就是说,使用 TLAB/resize 运行几乎总是更好。UseBiasedLocking
也与 CMS 相同,没有太多同步,STW 暂停会影响事情。UseNUMA
不适用于 g1 或 cms,仅适用于并行收集器。设置这个没有任何作用PerfDisableSharedMem
牺牲您调试和诊断性能问题的能力,以换取在刷新 hsperfdata 时防止可能的暂停preferIPv4Stack
不要使用ipv6
关于cassandra - cassandra 中的 G1GC 垃圾收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50337593/