我有一个双节点Cassandra(3.10)集群 . 我已经迁移了一些数据 . 根据每个节点中的nodetool,数据大小为1.4 TB . 我试图检查Cassandra实例所需的RAM大小 -
ps -aux | grep cassandra
我有 :
root 2510 124 80.2 1515965216 26435808 pts/0 SLl 10:36 138:10 java -Xloggc:/opt/cassandra/logs/gc.log ...... /*/*.jar org.apache.cassandra.service.CassandraDaemon
在这里我们可以看到Cassandra在RAM中占用了近-1483440_ GB的空间,我观察到这个大小不断增加 .
我想知道这是 Cassandra 的正常行为吗?
2 回答
该站点提供了不同包的规范,并提供了所有类型的硬件要求:
https://docs.datastax.com/en/dse-planning/doc/planning/planningHardware.html#planningHardware__memory
看看它,看看它是否在范围内 . 您甚至可以减少并限制其占用的RAM大小 .
所以这不是一个cassandra行为,更像是java的工作方式 . 在cassandra-env.sh文件中,您可以修改cassandra的起始和最大内存值 .
-Xms<Value>
指定cassandra启动的内存量-Xmx<Value>
指定堆大小可以增长多少 .cassandra的一个常见做法是初始化进程
-Xms
和-Xmx
是相同的 . 这消除了服务器不得不扩展堆空间的开销,并允许它被控制,以便像你发生的那样出现问题 .另外,如果你要超过12GB,可以考虑使用G1GC代替CMS进行垃圾收集 .