我有 Cassandra 2.1 以及以下属性设置:
MAX_HEAP_SIZE="5G"
HEAP_NEWSIZE="800M"
memtable_allocation_type: heap_buffers
顶级实用程序显示cassandra吃14.6G虚拟内存:
KiB Mem: 16433148 total, 16276592 used, 156556 free, 22920 buffers
KiB Swap: 16777212 total, 0 used, 16777212 free. 9295960 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
23120 cassand+ 20 0 14.653g 5.475g 29132 S 318.8 34.9 27:07.43 java
当我从Spark访问它时,它也会因各种 OutOfMemoryError 异常而死亡。
如何阻止此“ OutOfMemoryErrors ”并减少内存使用量?
答案 0 :(得分:2)
Cassandra确实吃了大量的内存,但它可以控制,但调整GC [垃圾收集]设置。
GC参数包含在JAVA_OPTS变量的bin / cassandra.in.sh文件中。
您可以在JAVA_OPTS中应用这些设置
-XX:+UseConcMarkSweepGC
-XX:ParallelCMSThreads=1
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
-XX:CMSIncrementalDutyCycleMin=0
-XX:CMSIncrementalDutyCycle=10
或者,不是指定MAX_HEAP_SIZE
和HEAP_NEWSIZE
这些参数,而是让cassandra'脚本指定这些参数,因为它会为这些参数指定最佳值。