如何将Cassandra(>2.0)JVM堆大小设置为8GB?当我输入free -m
时,它会给我以下信息。如何将Cassandra JVM堆大小设置为8GB?
total used free shared buffers cached
Mem: 16047 11336 4711 0 81 5814
-/+ buffers/cache: 5441 10606
Swap: 0 0 0
如文档的Tuning Java resources部分所述:
如果您决定更改Java堆大小,那么MAX_heap_SIZE和heap_NEWSIZE应该在conf/casandra-env.sh.中一起设置
在cassandra-env.sh中,搜索以下行:
#MAX_HEAP_SIZE="4G"
代码中的这一行发生在MAX_HEAP_SIZE计算完成之后,因此它起到了重写的作用。取消注释,并相应地进行设置。
MAX_HEAP_SIZE="8G"
8G以上要小心。关于JVM调优的指导,我推荐Amy Tobey的Cassandra 2.1 tuning Guide。她提供了一些调整CMS的技巧,以及关于实现新G1GC的精彩部分。
更新cassandra-env.sh
删除/注释掉整个calculate_heap_sizes()
功能
- 这是cassandra调用的函数,用于自动分配JVM大小
- 它占用1/4系统内存或8GB中较低的一个。这就是为什么默认的最大JVM大小是8GB
用$MAX_HEAP_SIZE
删除/注释掉其他行。
-
该行以:"仅在…时计算大小"开头
-
删除/保留HEAP_NEWSIZE注释掉
将CCD_ 5设置为新值。例如:16G
- 这应该是你唯一需要做这件事的地方
重新启动
- 理想情况下,您只需要重新启动Cassandra服务。然而,我只是在重新启动整个机器后才让它工作
另一个示例请参见:https://medium.com/@mlowicki/move-cassandra-2-1-to-g1-garbage-collector-b9fb27365509