1

我正在运行一个 5 节点 Cassandra 集群,它也恰好在 5 个节点上运行 Solr。我已经摄取并索引了超过 10 亿个项目,目前此消息一直在控制台上打印;

INFO 10:55:54,360 无法减少堆使用量,因为没有脏列族 INFO 10:56:03,897 ConcurrentMarkSweep 的 GC:1 个集合 538 毫秒,使用 2733064112;最大值为 3158310912 WARN 10:56:03,898 堆已满 0.865356257870536。您可能需要减少 memtable 和/或缓存大小。Cassandra 现在将刷新到两个最大的内存表以释放内存。如果您不希望 Cassandra 自动执行此操作,请调整 cassandra.yaml 中的 flush_largest_memtables_at 阈值

我每个节点有 8G,我在 Cassandra-env.sh 中将 MAX_HEAP_SIZE 设置为 3G。

有人可以解释一下我该如何解决这个问题吗?

谢谢马吉德

4

1 回答 1

4

可能只是您需要更多堆 - 添加一两个 gig 看看会发生什么。OTOH,您可能还需要更多系统内存来进行文件缓存 - 对于 8 GB 系统而言,启用 Solr 的 10 亿行似乎很多。

通常,大约 4000 万到 1 亿行是启用 Solr 的 DSE 节点的最大容量。您的集群有 5 个节点和 10 亿行,每个节点大约有 2 亿行。有时一个节点可以容纳 2 亿,有时则不能——在那里抛硬币。

此外,较高的复制因子有效地增加了 Cassandra 将放置在每个节点上的行数。因此,将 4000 万到 1 亿行指导除以 RF,以获得每个节点的体面目标行数。

简而言之,您需要一个更大的集群,至少 10 个节点,并且可能多达 25 个节点。如果 RF 为 3 或更高,您可能需要更多节点。

于 2013-10-14T12:05:56.797 回答