当前位置: 首页 > 知识库问答 >
问题:

Cassandra和堆大小

曹焱
2023-03-14

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

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

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

有人可以说明我该如何解决这个问题吗?

谢谢,马吉德。

共有1个答案

叶弘深
2023-03-14

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

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

此外,更高的复制因子有效地增加了Cassandra将放置在每个节点上的行数。因此,将4000万除以RF1亿行引导,以获得每个节点的适当目标行数。

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

 类似资料:
  • 我正在经历内存泄漏,这里有一些细节。 在泄漏后, null null 我很惊讶顶部、堆转储大小和实际堆大小之间的差异。我猜测top和heap之间的区别是垃圾收集器堆和本地堆区域的可能性。但是,为什么堆转储文件大小和实际堆大小(来自eclipse MAT analyzer)会不同呢? 对这个问题有什么见解吗? 更新/回答 一些建议是使用jcmd(https://docs.oracle.com/jav

  • 我是Java的初学者,刚开始使用Intellij作为我的IDE。 当我使用它时,有时会延迟。 我更改了我的 xms 和 xmx 以获得更大的堆大小(xms = 1024,xmx = 2048),但它抛出了一个错误。 所以,我把它回滚了。 错误消息是这样的:“初始堆大小设置为大于最大堆大小的值”。 有什么问题? 如果可能,如何增加最大堆大小? 我用的是笔记本电脑,它有8GB内存。x64Intelli

  • 我只是想看看我是否理解教授和在线资源所说的话。 对于heapSort算法,第一个元素的索引从0开始。 对于最大堆,如果子堆大于父堆,则percolate down应将最大子堆与其父堆交换,例如(这是用于赋值,因此我尝试发布尽可能少的代码): 所以最后,最大元素应该在索引0处。 如果这是正确的,我不理解的是heapSort实现: 最大堆中的渗滤层不应该将最大的元素放在索引0处吗?在这种情况下,为什么

  • 我在[17,98,89,42,67,54,89,25,38]中有一个数字列表,从左到右插入到一个空堆中。生成的堆是什么?

  • 问题内容: 谁能解释增加maxpermsize和max堆大小的副作用? 我知道有时遇到内存不足问题时,我们会增加-Xmx。但是我只是想知道在增加-Xmx时是否需要记住任何副作用。增大maxpermsize会如何影响运行时间? 谢谢。 问题答案: 简短答案 将Java堆大小加倍,会使垃圾收集暂停的等待时间增加一倍,而当堆按Gb顺序使用当前的JVM技术时,该等待时间将变为数秒。看来新发布的Java7将

  • 问题内容: 我已经读到 32位Windows上的最大堆大小是〜1.5GB,这是由于JVM需要连续的内存。有人可以解释“连续内存”的概念吗,为什么Windows上最多只有1.5GB? 其次,那么64位Windows上的最大堆大小是什么?为什么与32位Windows上可用的最大堆大小不同? 问题答案: 32位/ 64位部分与Java无关 事实证明,32位系统中的内存位置由32位无符号整数引用。这最多允