由于GC.MY年轻一代GC需要很长时间,所以我正在丢失突变
G1年轻一代GC在1804毫秒。G1伊甸园空间: 771751936 -> 0;G1老一代: 5351931920 -> 4995416072;G1幸存者空间: 83886080 -> 58720256;
在最近5000毫秒内丢弃了突变消息:内部超时为814,跨节点超时为0。平均内部丢弃延迟: 2874 ms,平均跨节点丢弃延迟:0 ms
为了避免这种情况,我应该减少Cassandra-env.sh中的MaxGCPauseMillis选项。
我们的默认值是500ms。(JVM_OPTS=“$JVM_OPTS -XX:MaxGCPauseMillis=500)
调整此设置将减少丢弃的突变消息。我需要增加还是减少该值。
发布于 2017-07-25 04:53:17
如果突变需要超过5s才能处理,1.8s GC可能不是唯一的问题。tpstats中是否有大量待处理的数据?cpu负载看起来怎么样?您可能正在以Cassandra无法使用您的硬件和数据模型支持的速度编写代码。
您可能希望先尝试增加堆大小。使用G1时,16 G1以下的空间是很难调整的。如果包含花费1.8秒的gc日志,那么帮助就更容易了,如果没有日志,就很难知道到底发生了什么。您可以尝试减少gc时间目标,但如果这个较长的GC是一个异常值,则可能没有帮助。如果更新记忆集花费的时间太长,您可能想要增加区域大小。检查大型对象,以及可能存在数据建模问题的对象(增加区域大小将有所帮助)。如果从分配峰值获得疏散失败,请增加堆大小或将GCReservePercent设置为25而不是10,以便为其提供更多空间来处理峰值。
https://stackoverflow.com/questions/45289603
复制相似问题