使用 Cassandra 1.1.5,一直在与缓慢的写入性能、JVM GC 锁定等问题作斗争……在我们的日志中,我们经常看到这种情况:
WARN [ScheduledTasks:1] 2013-08-28 09:28:51,983 GCInspector.java (line 145) Heap is 0.8589157615524839 full. You may need to reduce memtable and/or cache sizes. Cassandra will now flush up to the two largest memtables to free up memory. Adjust flush_largest_memtables_at threshold in cassandra.yaml if you don't want Cassandra to do this automatically
我们系统中最大的 memtable(通过 JConsole 观察到)运行大约 20,000,000 个数据大小(如果是字节,我假设约为 20MB)。
如果重要的话,这个列族中几乎有 1B 行。
flush_largest_memtables_at
设置为 0.75,但似乎我们几乎连续命中。该表的模式是大量写入,而读取很少。(本质上是一个集群日志)
行缓存被禁用,键缓存设置为 40MB。我们有 8GB 的堆与 JVM 相关联(24GB 的物理堆)。
堆使用量主要在 6.5 到 7.5GB 之间。
关于在这里减少堆使用的建议?当然,这不是我们在集群中有多少数据的一个因素,不是吗?(我们在这个集群中有大量可用的磁盘)