2017-07-24 109 views
1

我越來越下降了,由於GC.MY年輕一代GC是需要長時間卡桑德拉--JVM性能調優G1GC

G1年輕一代GC在1804ms突變。 G1 Eden空間:771751936 - > 0; G1老一代:5351931920 - > 4995416072; G1倖存者空間:83886080 - > 58720256;

MUTATION消息在最近的5000毫秒內丟失:814表示內部超時,0表示跨節點超時。平均內部丟棄延遲:2874毫秒和平均跨節點丟棄延遲:0毫秒

爲了避免這種情況,我應該減少Cassandra-env.sh中的MaxGCPauseMillis選項。 。

我們的默認值爲500ms(JVM_OPTS =「$ JVM_OPTS -XX:MaxGCPauseMillis = 500)

會調整此設置將減少丟棄突變的消息,我需要增加或減少的值

+0

你應該發佈詳細的GC日誌,而不是一行。 '-XX:+ PrintGCDetails' – the8472

回答

0

1.8s如果突變超過5s需要處理,GC可能不是唯一的問題在tpstats中是否有大量未決的問題cpu負載看起來如何?您可能以Cassandra無法承受的速度編寫硬件和數據模型

你可能只想嘗試增加你的堆大小,在16GB的空間下很難與G1配合。如果您從1.8s的時間開始包含gc日誌,那麼它更容易提供幫助,而無需記錄其難以確定發生的事情。您可以嘗試減少gc時間目標,但如果這個長時間GC是異常值,它可能無法幫助。如果花費很長時間更新記憶集,您可能需要增加區域大小。檢查大型物體,如井可能是數據建模問題(增加區域大小會有幫助)。如果您從分配峯值中獲得疏散失敗,請增加堆大小或將GCReservePercent設置爲25而不是10,以便爲處理峯值提供更多空間。

+0

謝謝,克里斯沒有任何未完成的任務 – rishi

+0

謝謝,克里斯沒有懸而未決的任務,我們的堆大小是16GB。每次我們有了突變,我們看到新的GEN需要大約2秒的時間。如果我將參數值減少到250毫秒,這是沒用的。 – rishi

+0

這取決於。如果你安靜地運行,那麼分配的突然增加,你可能仍然有問題。這是你可以看到異常GC的地方(即大部分時間是500ms,但是每天一次當它在壓縮中對大分區索引進行反序列化時,它有2s GC)。這是gc日誌有用的地方,也是決定調整什麼來防止它的原因。 –