Кассандра OOM после CMS делает пустыми новые гены - PullRequest
0 голосов
/ 10 октября 2018

В моем кластере кассандры есть 6 узлов, но до сих пор 5 из них вышли из строя из-за сбоя карты, вызванного OOM.
Перед этим CMS выдает журнал WARN, и new-gen становится полностью пустым.Это не типичное поведение CMS, но я не знаю, что происходит.

WARN [служебная нить] 2018-10-03 23: 47: 34,510 GCInspector.java:282 - GC ConcurrentMarkSweep в 4748 мс.CMS Old Gen: 4311229160 -> 1434360152;Par Eden Space: 215565624 -> 0;Par Survivor Space: 6320160 -> 0

Я использую Cassandra 3.9, а размер кучи Java составляет 8 ГБ.Я не изменяю никакие параметры jvm.
Как мне проверить следующее?

Вот краткое изложение system.log.

WARN  [Service Thread] 2018-09-22 16:56:28,089 GCInspector.java:282 - ConcurrentMarkSweep GC in 3926ms.  CMS Old Gen: 1768828144 -> 1173494472; Par Eden Space: 68469544 -> 0; Par Survivor Space: 9587608 -> 0    
ERROR [CompactionExecutor:89253] 2018-09-22 16:56:28,311  CassandraDaemon.java:226 - Exception in thread Thread[CompactionExecutor:89253,1,main]    
org.apache.cassandra.io.FSReadError: java.io.IOException: Map failed
Caused by: java.io.IOException: Map failed
Caused by: java.lang.OutOfMemoryError: Map failed
WARN  [GossipTasks:1] 2018-09-22 16:56:38,185 FailureDetector.java:287 - Not marking nodes down due to local pause of 9094437652 > 5000000000
INFO  [CompactionExecutor:89253] 2018-09-22 16:56:38,190 HeapUtils.java:136 - Dumping heap to /cassandra/java_1521034957.hprof ...
Heap dump file created

ERROR [CompactionExecutor:89253] 2018-09-22 16:56:43,305 JVMStabilityInspector.java:141 - JVM state determined to be unstable.  Exiting forcefully due to:
java.lang.OutOfMemoryError: Map failed

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Похоже, что ваша система выдает исключения OutOfMemory (включая отключение heapdumps).Прямые байтовые буферы вне кучи по умолчанию будут выделяться до размера вашей кучи - так что еще 8 ГБ.Если ваш узел не имеет более 16 ГБ пространства, вы можете выйти за пределы.Также возможно, что ваши прямые байтовые буферы превышают то, что может быть увеличено с -XX:MaxDirectMemorySize=12G (если у вас более 16 ГБ).Убедитесь, что настройки вашего ядра также настроены с такими вещами, как vm.max_map_count = 1000000 в /etc/sysctl.conf и nproc до 32768 без ограничений и т. Д. Datastax дает отличные рекомендации на здесь , которые также имеют отношение к Cassandra.

0 голосов
/ 10 октября 2018

Настоятельно рекомендуется для Кассандры использовать G1GC вместо CMS.

Чтобы установить G1 в качестве сборщика мусора Java

  • Откройте jvm.options.
  • Закомментируйте строку -Xmn800M.
  • Закомментируйте все строки в разделе ### Настройки CMS.
  • Раскомментируйте соответствующие настройки G1 в разделе

G1 Настройки: используйте сборщик мусора в первую очередь в Hotspot.-XX: + UseG1GC

Пусть JVM выполняет меньше запоминающихся заданий во время STW, вместо этого предпочитая одновременный сборщик мусора.Уменьшает задержку p99.9.-XX: G1RSetUpdatingPauseTimePercent = 5

Ссылка для установки G1GC

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...