2016-12-23 4 views
2

Я имею Кассандру 2.1 и следующие свойства устанавливают:Кассандра ест модуля памяти

MAX_HEAP_SIZE="5G" 
HEAP_NEWSIZE="800M" 
memtable_allocation_type: heap_buffers 

сверху утилита показывает, что Cassandra ест виртуальную память 14,6 г:

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 

Он также умирает с различными OutOfMemoryError исключения, когда я обращаюсь к нему из Spark.

Как это предотвратить «OutOfMemoryErrors» и уменьшить использование памяти?

ответ

2

Кассандра действительно питается много памяти, но его можно контролировать, но настраивая настройку GC [Garbage Collection].

Параметры GC содержатся в файле bin/cassandra.in.sh в переменной JAVA_OPTS.

вы можете применить эти параметры в JAVA_OPTS

-XX:+UseConcMarkSweepGC 
    -XX:ParallelCMSThreads=1 
    -XX:+CMSIncrementalMode 
    -XX:+CMSIncrementalPacing 
    -XX:CMSIncrementalDutyCycleMin=0 
    -XX:CMSIncrementalDutyCycle=10 

Или вместо указания MAX_HEAP_SIZE и HEAP_NEWSIZE этих параметров позволяют cassandra'script указать эти параметры Поскольку присвоит лучшие значения для этих параметров.

+0

Благодарим вас за ответ. Но этот параметр изменяет параметры GC и GC работает в памяти кучи. В моем случае у меня есть ограничение на кучу 5G, а кассандра ест 14 г виртуальной памяти. Поэтому я предполагаю, что это не куча, которую невозможно контролировать с помощью этих опций. –