Cassandra - 用于G1GC的JVM调整

时间:2017-07-24 20:35:48

标签: cassandra jvm database-tuning

我因GC而失去突变。我年轻的一代GC需要很长时间

G1年代GC在1804ms。 G1伊甸园空间:771751936 - > 0; G1 Old Gen:5351931920 - > 4995416072; G1幸存者空间:83886080 - > 58720256;

MUTATION消息在最后5000毫秒内被删除:内部超时为814,跨节点超时为0。平均内部丢弃延迟:2874 ms和平均跨节点丢弃延迟:0 ms

为了避免这种情况,我应该减少Cassandra-env.sh中的MaxGCPauseMillis选项。

我们的默认值是500毫秒。(JVM_OPTS =“$ JVM_OPTS -XX:MaxGCPauseMillis = 500)

调整此设置将减少丢弃的突变消息。我是否需要增加或减少该值。

1 个答案:

答案 0 :(得分:1)

如果突变超过5秒进行处理,1.8s GC可能不是唯一的问题。在tpstats中是否有大量未决? cpu加载怎么样?你的写作速度可能是Cassandra无法用你的硬件和数据模型维持的。

您可能希望首先尝试增加堆大小。低于16GB的空间很难用G1调整。如果你从花费1.8s的时间包含gc日志,它更容易提供帮助,没有日志很难说明究竟发生了什么。您可以尝试减少gc时间目标,但如果这个长GC是一个异常值,它可能没有帮助。如果花费太长时间来更新记忆集,您可能希望增加区域大小。检查大量的物体,例如可能是数据建模问题(增加区域大小会有所帮助)。如果您从分配峰值中获得疏散失败,请增加堆大小或将GCReservePercent设置为25而不是10,以便为处理峰值提供更多空间。

相关问题