我有一个 cassandra 5 节点集群,内存为 256GB。 我在读取操作方面面临一些性能问题,因此我决定增加堆大小,因为它使用的是默认值。 我用 MAX_HEAP_SIZE="128G" 和 HEAP_NEWSIZE="32G" 更新了 cassandra-env 文件。
我发现读取查询的性能更好一些,但我在日志中看到了一些消息,例如“某些操作很慢”和垃圾收集事件。似乎增加堆大小可能会导致垃圾收集活动增加。
您能帮我调整一下关于 MAX_HEAP_SIZE="128G" 的其他参数吗?
首先,我不会更改cassandra-env.sh中的参数。相反,请使用 jvm.options 文件。
其次,我可能不会迁移到 128G 堆大小,这可能太大了。
第三,newsize 和最大堆大小应该相同,否则,您将得到扩展,这可能会导致性能问题。
第四,在增加堆大小之前,您必须了解发生了什么。为什么要增加堆大小?您是否因为堆耗尽而看到分配错误?您是否看到老一代 GC 长时间暂停?
在 jvm.options 中,设置 -Xmx 和 -Xms,而不是与 cassandra-env.sh 混淆。