Cassandra--G1GC 的 JVM 调优

标签 cassandra jvm database-tuning

由于 GC,我正在丢失突变。我的年轻一代 GC 花费了很长时间

G1 年轻代 GC,耗时 1804 毫秒。 G1 伊甸园空间:771751936 -> 0; G1老一代:5351931920 -> 4995416072; G1幸存者空间:83886080 -> 58720256;

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

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

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

调整此设置会减少丢弃的变异消息。我需要增加还是减少该值。

最佳答案

1.8s GC 可能不是唯一的问题,如果 mutation 需要超过 5s 来处理。 tpstats 中是否有大量待处理? cpu负载如何?您的写入速度可能是 Cassandra 无法通过您的硬件和数据模型维持的。

您可能只想先尝试增加堆大小。 16gb 以下的空间很难用 G1 调整。如果您包含从 1.8 秒开始的 gc 日志,则更容易提供帮助,如果没有日志,则很难说出到底发生了什么。您可以尝试减少 gc 时间目标,但如果这个长 GC 是异常值,它可能无济于事。如果更新 memset 的时间太长,您可能需要增加区域大小。检查巨大的对象,以及可能是数据建模问题的对象(增加区域大小会有所帮助)。如果您因分配峰值而疏散失败,请增加堆大小或将 GCReservePercent 设置为 25 而不是 10,以为其提供更多空间来处理峰值。

关于Cassandra--G1GC 的 JVM 调优,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45289603/

相关文章:

data-modeling - Cassandra 中的数据建模

apache-spark - Spark : PySpark + Cassandra query performance

mysql - mySQL 的速度和调整(10 亿行)

具有多个数据中心时的Cassandra复制因子

sql - Cassandra/HBase 或只是 MySQL : Potential problems doing the next thing

reflection - Sun JVM 在运行时创建 sun.reflect.DelegatingClassLoader 的实例是什么?

MYSQL查询调优,通过下一个表的数据更新一个表的数据

sql - 避免索引计划中的排序运算符

java - AWS 免费套餐使用

java - UncaughtExceptionHandler 中抛出的错误是否被吞没?