Несколько узлов Кассандра выходит из строя - PullRequest
1 голос
/ 02 мая 2019

У нас есть кластер кассандры с 12 узлами в 2 разных центрах обработки данных.Мы переносим данные из sql DB в cassandra через сетевое приложение, и есть еще одно .net приложение, которое считывает данные из cassandra.В последнее время мы видим, что один или другой узел выходит из строя (состояние nodetool показывает DN и служба на нем остановлена).Ниже приведен вывод состояния nodetool.Мы должны запустить службу, чтобы она снова заработала, но она снова останавливается.

https://ibb.co/4P1T453

Путь к журналу: https://pastebin.com/FeN6uDGv

1 Ответ

1 голос
/ 02 мая 2019

Итак, просматривая вашу пастинку, я вижу несколько вещей, которые можно отрегулировать.

Во-первых, я уверен, что это ваша основная проблема:

Unable to lock JVM memory (ENOMEM). This can result in part of the JVM being swapped out,
especially with mmapped I/O enabled. Increase RLIMIT_MEMLOCK or run Cassandra as root.

С Коды ошибок GNU :

Макрос: int ENOMEM

«Невозможно выделить память». Система не может выделить больше виртуальных память, потому что ее емкость заполнена.

-Xms12G, -Xmx12G, -Xmn3000M,

Сколько оперативной памяти в вашем экземпляре? Из того, что я вижу, ваш узел умирает от OOM (Ошибка нехватки памяти). Я предполагаю, что вы назначаете слишком много оперативной памяти в кучу, а для OS / page-cache недостаточно. На самом деле, я бы не выделил в кучу более 50% -60% оперативной памяти.

Например, я в основном строю экземпляры на 16 ГБ ОЗУ, и я обнаружил, что максимальная куча 10 ГБ примерно настолько высока, насколько вы этого хотите.

-XX:+UseParNewGC, -XX:+UseConcMarkSweepGC

На самом деле, поскольку вы используете CMS GC, я бы не стал использовать более 8 ГБ для максимального размера кучи.

Maximum number of memory map areas per process (vm.max_map_count) 65530 is too low,
recommended value: 1048575, you can change it with sysctl.

Это означает, что вы не настроили limits.conf или sysctl.conf. Ознакомьтесь с руководством ( DSE 6.0 - Рекомендуемые производственные настройки ), но, как правило, рекомендуется добавить в эти файлы следующее:

/ и т.д. / limits.conf

* - memlock unlimited
* - nofile 100000
* - nproc 32768
* - as unlimited

/ и т.д. / sysctl.conf

vm.max_map_count = 1048575

Примечание. После настройки файла sysctl.conf вы захотите запустить sudo sysctl -p или перезагрузиться.

Is swap disabled? : false,

Вы захотите захотеть отключить своп. Если Кассандра начнет выгружать содержимое ОЗУ на диск, все будет очень медленно. Запустите swapoff -a, затем отредактируйте /etc/fstab и удалите все записи подкачки.

ТЛ; др; Краткое описание

  • Установите начальный и максимальный размеры кучи на 8 ГБ (новый размер кучи подходит).
  • Измените ваши limits.conf и sysctl.conf файлы соответствующим образом.
  • Отключить своп.
  • Это также хорошая идея, чтобы перейти на последнюю версию 3.11 (3.11.4).

Надеюсь, это поможет!

...