由于频繁的GC,Cassandra内存不足

时间:2015-02-10 01:36:38

标签: cassandra cassandra-2.0

我遇到网络级中断,我的12台服务器中有8台由于我们尝试使用16k的nproc硬限制不正确而中断。

发布我们将其增加到32k(希望32 GB RAM没问题)并重新启动所有服务器。由于内存不断连续,我在一个DC中的4台服务器似乎经常出现故障。当我检查日志时,

  1. 我发现了很多GC检查器日志打印件。
  2. 每次关闭应用程序时,缓存的内存似乎仍然被占用。我是否需要删除缓存并启动应用程序?我做了几次,甚至GC也没有结束。它一直在吃记忆,走向死亡。 GC的印刷品是从ParNew开始的。关于如何解决此问题的任何想法?
  3. 我清除了正在进行的压缩,开始关闭服务器几次阻止重启。这似乎在每次之间开始。这是一个问题吗?关于如何解决这个问题的任何想法?

    使用的Cassandra版本:2.0.3

1 个答案:

答案 0 :(得分:2)

由于离线诊断gc问题很困难(如果不是不可能),我建议你阅读这篇文章。它提供了有关gc和JVM设置的详细信息。尝试按照他们的建议并调整您的设置。 http://tech.shift.com/post/74311817513/cassandra-tuning-the-jvm-for-read-heavy-workloads

默认的JVM堆设置是根据核心数等计算出来的。所以它很容易就可以了,甚至可能是有害的"如下所述:https://issues.apache.org/jira/browse/CASSANDRA-8150

因此,我们的想法是将新一代内存调整到足以阻止短期对象被提升为幸存者空间,甚至是老一代内存。

这是关于cassandra的JVM调优的另一篇好文章:http://blog.mikiobraun.de/2010/08/cassandra-gc-tuning.html

这一篇专门讨论了压缩和GC问题:http://aryanet.com/blog/cassandra-garbage-collector-tuning