无法回收内存和太多MemtableReclaimMemory待处理任务

时间:2019-02-23 08:56:32

标签: cassandra

我们发现Cassandra在生产环境中有大量写累积,并且我们的业务经历了很多写失败。 通过system.log,发现MemtableReclaimMemory在开始时处于挂起状态,然后在某个时刻出现了大量MutationStage堆栈。 最终,堆内存已满,GC时间达到数十秒,通过nodetool节点状态为DN,但Cassandra进程仍在运行,我们杀死了该节点并重新启动该节点,以上情况消失了。

Active MemtableReclaimMemory线程的数量似乎也保持在1。

(您可以看到1.PNG)

在某个时刻出现了大量MutationStage堆栈。

(您可以看到2.PNG)

较长的GC时间:

  • MemtableReclaimMemory 1 156 24565 0 0

871毫秒内的G1老式GC。 G1老一代:51175946656-> 50082999760; MutationStage 128 11931622 1983820772 0 0 CounterMutationStage 0 0 0 0 0 MemtableReclaimMemory 1 156 24565 0 0 G1年轻一代GC在969毫秒内G1伊甸园空间:1090519040-> 0; G1老一代:50082999760-> 51156741584; 突变阶段128 11953653 1983820772 0 0 CounterMutationStage 0 0 0 0 0 MemtableReclaimMemory 1 156 24565 0 0 G1老式GC在84785毫秒内。 G1老一代:51173518800-> 50180911432; 突变阶段128 11967484 1983820772 0 0 CounterMutationStage 0 0 0 0 0 MemtableReclaimMemory 1 156 24565 0 0 G1年轻一代GC(611毫秒)。 G1伊甸园空间:989855744-> 0; G1老一代:50180911432-> 51153989960; MutationStage 128 11975849 1983820772 0 0 CounterMutationStage 0 0 0 0 0 MemtableReclaimMemory 1 156 24565 0 0 G1老一代GC在85845毫秒内。 G1老一代:51170767176-> 50238295416; 突变阶段128 11978192 1983820772 0 0 CounterMutationStage 0 0 0 0 0 MemtableReclaimMemory 1 156 24565 0 0 G1年轻一代GC(602毫秒)。 G1伊甸园空间:939524096-> 0; G1老一代:50238295416-> 51161042296; 突变阶段128 11994295 1983820772 0 0 CounterMutationStage 0 0 0 0 0 MemtableReclaimMemory 1 156 24565 0 0 G1上一代GC在85307毫秒内完成。 G1老一代:51177819512-> 50288829624;元空间:36554436-> 36525696 MutationStage 128 12001932 1983820772 0 0 CounterMutationStage 0 0 0 0 0 66-MutationStage 128 12004395 1983820772 0 0 66-CounterMutationStage 0 0 0 0 0 MemtableReclaimMemory 1 156 24565 0 0 66-MemtableReclaimMemory 1 156 24565 0 0 G1年轻一代GC(610毫秒)。 G1伊甸园空间:889192448-> 0; G1老一代:50288829624-> 51178022072; 突变阶段128 12023677 1983820772 0 0 为什么会这样呢?

讨论链接如下: https://issues.apache.org/jira/browse/CASSANDRA-14953?page=com.atlassian.jira.plugin.system.issuetabpanels%3Aall-tabpanel

0 个答案:

没有答案