Cassandra GC занимает 30 секунд и зависает узел

Окружающая среда

У меня есть следующая среда:

  • Кассандра 2.1.0
  • 5 узлов в одном ЦОД, 4 узла во втором ЦОД
  • 2500 записей в секунду
  • минимальное количество чтений (обычно нет, иногда мало)

Проблема

После долгой работы узла GC начинает занимать все больше и больше времени, пока nodetool не сообщит об этом узле как о неработающем.

Я визуализирую gc.log и получаю следующий снимок экрана: введите здесь описание изображения

Настройки JVM

После комментария полная командная строка работающей Cassandra:

java -ea -javaagent:/usr/lib/cassandra/bin/../lib/jamm-0.2.6.jar
 -XX:+UseThreadPriorities
 -XX:ThreadPriorityPolicy=42
 -Xms8192M
 -Xmx8192M
 -Xmn2048M
 -XX:+HeapDumpOnOutOfMemoryError
 -Xss192k
 -XX:+UseParNewGC
 -XX:+UseConcMarkSweepGC
 -XX:+CMSParallelRemarkEnabled
 -XX:SurvivorRatio=8
 -XX:MaxTenuringThreshold=1
 -XX:CMSInitiatingOccupancyFraction=75
 -XX:+UseCMSInitiatingOccupancyOnly
 -XX:+PrintGCDetails
 -XX:+PrintGCTimeStamps
 -XX:+PrintClassHistogram
 -XX:+PrintTenuringDistribution
 -XX:+PrintGCApplicationStoppedTime
 -Xloggc:/var/log/cassandra/gc.log
 -Djava.net.preferIPv4Stack=true
 -Dcom.sun.management.jmxremote.port=8080
 -Dcom.sun.management.jmxremote.ssl=false
 -Dcom.sun.management.jmxremote.authenticate=false
 -Dlogback.configurationFile=logback.xml
 -Dcassandra.logdir=/usr/lib/cassandra/bin/../logs
 -Dcassandra.storagedir=/usr/lib/cassandra/bin/../data
 -Dcassandra-pidfile=/var/run/cassandra.pid
 -cp /usr/lib/cassandra/bin/../conf:/usr/lib/cassandra/bin/../build/classes/main:/usr/lib/cassandra/bin/../build/classes/thrift:/usr/lib/cassandra/bin/../lib/airline-0.6.jar:/usr/lib/cassandra/bin/../lib/antlr-3.2.jar:/usr/lib/cassandra/bin/../lib/apache-cassandra-2.1.0.jar:/usr/lib/cassandra/bin/../lib/apache-cassandra-clientutil-2.1.0.jar:/usr/lib/cassandra/bin/../lib/apache-cassandra-thrift-2.1.0.jar:/usr/lib/cassandra/bin/../lib/commons-cli-1.1.jar:/usr/lib/cassandra/bin/../lib/commons-codec-1.2.jar:/usr/lib/cassandra/bin/../lib/commons-lang3-3.1.jar:/usr/lib/cassandra/bin/../lib/commons-math3-3.2.jar:/usr/lib/cassandra/bin/../lib/compress-lzf-0.8.4.jar:/usr/lib/cassandra/bin/../lib/concurrentlinkedhashmap-lru-1.4.jar:/usr/lib/cassandra/bin/../lib/disruptor-3.0.1.jar:/usr/lib/cassandra/bin/../lib/guava-16.0.jar:/usr/lib/cassandra/bin/../lib/high-scale-lib-1.0.6.jar:/usr/lib/cassandra/bin/../lib/jackson-core-asl-1.9.2.jar:/usr/lib/cassandra/bin/../lib/jackson-mapper-asl-1.9.2.jar:/usr/lib/cassandra/bin/../lib/jamm-0.2.6.jar:/usr/lib/cassandra/bin/../lib/javax.inject.jar:/usr/lib/cassandra/bin/../lib/jbcrypt-0.3m.jar:/usr/lib/cassandra/bin/../lib/jline-1.0.jar:/usr/lib/cassandra/bin/../lib/jna-4.0.0.jar:/usr/lib/cassandra/bin/../lib/jna.jar:/usr/lib/cassandra/bin/../lib/json-simple-1.1.jar:/usr/lib/cassandra/bin/../lib/libthrift-0.9.1.jar:/usr/lib/cassandra/bin/../lib/logback-classic-1.1.2.jar:/usr/lib/cassandra/bin/../lib/logback-core-1.1.2.jar:/usr/lib/cassandra/bin/../lib/lz4-1.2.0.jar:/usr/lib/cassandra/bin/../lib/metrics-core-2.2.0.jar:/usr/lib/cassandra/bin/../lib/netty-all-4.0.20.Final.jar:/usr/lib/cassandra/bin/../lib/reporter-config-2.1.0.jar:/usr/lib/cassandra/bin/../lib/slf4j-api-1.7.2.jar:/usr/lib/cassandra/bin/../lib/snakeyaml-1.11.jar:/usr/lib/cassandra/bin/../lib/snappy-java-1.0.5.2.jar:/usr/lib/cassandra/bin/../lib/stream-2.5.2.jar:/usr/lib/cassandra/bin/../lib/super-csv-2.1.0.jar:/usr/lib/cassandra/bin/../lib/thrift-server-0.3.5.jar org.apache.cassandra.service.CassandraDaemon 

Вопрос

Что я должен проверить, чтобы выяснить, в чем проблема? Тем более у меня недавно

com.google.common.util.concurrent.UncheckedExecutionException: java.lang.RuntimeException: org.apache.cassandra.exceptions.ReadTimeoutException: время ожидания операции истекло — получено только 2 ответа


person Piotr Stapp    schedule 08.01.2015    source источник
comment
Не могли бы вы опубликовать свои настройки JVM?   -  person codejitsu    schedule 08.01.2015
comment
@leshkin весь cassandra.env.sh?   -  person Piotr Stapp    schedule 08.01.2015
comment
нет, только часть JVM_OPTS.   -  person codejitsu    schedule 08.01.2015
comment
@leshkin добавил полный cmd. Я надеюсь, это то, что вы ожидаете   -  person Piotr Stapp    schedule 08.01.2015
comment
Вы используете JMX для мониторинга кластера или что-то в этом роде? Если да, прочтите это: issues.apache.org/jira/browse/CASSANDRA-6541   -  person codejitsu    schedule 08.01.2015
comment
@leshkin Спасибо, посмотрю на этот параметр. Напишу поможет или нет.   -  person Piotr Stapp    schedule 08.01.2015
comment
Пожалуйста, используйте последнюю версию 1.2.x (в настоящее время 1.2.19), чтобы исключить проблемы, которые уже решены.   -  person omid    schedule 09.01.2015
comment
@omid, почему я должен понизить версию своей Cassandra с 2.1.0 до 1.2.19?   -  person Piotr Stapp    schedule 09.01.2015
comment
@Garath Ошибочно думал, что ты на 1.2.x. Я имел в виду вообще самую старшую версию патча. Последняя версия 2.1.x теперь 2.1.2.   -  person omid    schedule 12.01.2015


Ответы (1)


Если у вас большая рабочая нагрузка по записи, вы получите много длинных второстепенных GC с 2-гигабайтным новым поколением. Вы, вероятно, захотите набрать это обратно до 800 МБ.

person Jon Haddad    schedule 10.01.2015