我正在运行一个5节点的Cassandra集群,它也恰好在5个节点上运行Solr。我已经摄取并索引了超过十亿件物品,目前这条消息一直在控制台上打印出来;
INFO 10:55:54,360由于没有脏,因此无法减少堆使用量 列族INFO 10:56:03,897 GC用于ConcurrentMarkSweep:538 ms 共有1个收藏,2733064112使用;最大值是3158310912 WARN 10:56:03,898堆是0.865356257870536满。你可能需要减少 memtable和/或缓存大小。卡桑德拉现在将冲到两者 释放内存的最大记忆。调整 如果不这样,请在cassandra.yaml中使用flush_largest_memtables_at阈值 希望Cassandra自动执行此操作
我每个节点有8G,我在Cassandra-env.sh中将MAX_HEAP_SIZE设置为3G。
请问有人可以解释一下如何解决这个问题吗?
由于 迈季
答案 0 :(得分:3)
可能只是需要更多堆 - 添加一两个工具,看看会发生什么。 OTOH,你可能还需要更多的系统内存来进行文件缓存 - 对于8 GB系统来说,10亿个支持Solr的行似乎很多。
通常,大约4千万到1亿行是启用Solr的DSE节点的最大容量。通过5个节点和10亿行,您的群集每个节点大约有2亿行。有时可以在一个节点上容纳2亿个,有时不会 - 在那里翻转硬币。
此外,更高的复制因子有效地增加了Cassandra将在每个节点上放置的行数。因此,通过RF划分4,000万到1亿行引导,以获得每个节点的合适目标行数。
简而言之,您需要一个更大的集群,至少10个节点,可能多达25个节点。 RF为3或更高时,您可能需要更多节点。