减少Cassandra 1.1.x堆的使用

减少Cassandra 1.1.x堆的使用,cassandra,Cassandra,使用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

使用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
通过JConsole观察到,我们系统中最大的memtable可以运行大约20000000个数据大小,如果这些数据是字节的话,我假设大约是20MB

如果有必要的话,这个列族中几乎有1B行

flush\u maximum\u memtables\u at设置为.75,但我们似乎几乎连续达到该值。此表的模式是大量写入,很少读取。本质上是集群日志

行缓存已禁用,密钥缓存设置为40MB。我们有8GB的堆与24GB物理内存的JVM相关联

堆使用率通常在6.5到7.5GB之间


关于如何降低堆使用率的建议?当然这不是我们在集群中拥有多少数据的一个因素,是吗?这个集群中有大量可用的磁盘

看起来像1.1.x中的Bloom过滤器,它随着每个节点中存储的数据量而增长,保存在堆上。单个ColumnFamily的-Filter.db文件超过1.6GB

伟大的文章:


我们已经在此columnfamily上向上修改了bloom\u filter\u fp\u chance设置,这将减少bloom filter数据的大小,并正在运行一次清理,以查看发生了什么情况。

类似于1.1.x中的bloom filter,它随每个节点中存储的数据量而增长,并保存在堆上。单个ColumnFamily的-Filter.db文件超过1.6GB

伟大的文章:


我们已经在此columnfamily上向上修改了bloom_filter_fp_chance设置,这将减少bloom filter数据的大小,真正的修复方法是升级到1.2.x,其中bloom过滤器和压缩元数据已移出堆:

真正的修复方法是升级到1.2.x,其中bloom过滤器和压缩元数据已移出堆:

我们在1.1中发现降低bloom过滤器的可能性设置有帮助。如果你使用

nodetool cfstats 
它有助于确定柱族的布卢姆过滤器大小有多大帮助。另一个需要考虑读取时间的事情是增加CasDANRA.YAML中的索引间隔。如果你有很多小行,我会推荐这个。如果您的行很宽,这可能不是一个好主意


我建议你先把球扔了,看看重击手是什么

我们在1.1中发现,降低bloom_filter_fp_chance设置会有所帮助。如果你使用

nodetool cfstats 
它有助于确定柱族的布卢姆过滤器大小有多大帮助。另一个需要考虑读取时间的事情是增加CasDANRA.YAML中的索引间隔。如果你有很多小行,我会推荐这个。如果您的行很宽,这可能不是一个好主意


我建议你先把球扔了,看看重击手是什么

您是否尝试过按照警告消息的提示调整刷新\u最大\u内存表\u位置?您是否尝试过按照警告消息的提示调整刷新\u最大\u内存表\u位置?当然。。。考虑到我们有如此多的数据,并且将升级一个9节点集群,这有点让人望而生畏。我们需要在实验室里做几次运动。最好是想了解如何优化1.1.x,这样内存利用率就不会与存储的数据同时运行。当然。。。考虑到我们有如此多的数据,并且将升级一个9节点集群,这有点让人望而生畏。我们需要在实验室里做几次运动。希望了解如何优化1.1.x,使内存利用率不会与存储的数据同时运行。