卡桑德拉吃了记忆

时间:2016-12-23 07:49:07

标签: memory cassandra cassandra-2.1

我有 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 ”并减少内存使用量?

1 个答案:

答案 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_SIZEHEAP_NEWSIZE这些参数,而是让cassandra'脚本指定这些参数,因为它会为这些参数指定最佳值。