Как уменьшить/увеличить потребление памяти Elasticsearch

Как уменьшить/увеличить потребление памяти Elasticsearch

16 Sep 2021Заметки 2394 ~ 2 мин.

Это очень важная настройка для ElasticSearch. Чтобы этот параметр был установлен правильно, система должна хорошо контролироваться

Короче говоря, мы определяем объем памяти, который Elasticsearch будет выделять в начале, и максимальное использование памяти с помощью этой конфигурации.

Перед настройкой Heap Size я расскажу о концепции памяти Heap для правильного отслеживания размера Heap. Приложения Java используют методы «стека»(stack) и «кучи»(heap) для сохранения данных в памяти.

В режиме кучи приложение управляет использованием и очисткой памяти. В Java объекты хранятся в памяти кучи, и благодаря структурам, называемым сборщиком мусора, обеспечивается управление памятью кучи.

Что такое сборщик мусора?

В Java управление памятью выполняется в фоновом режиме с включенным JVM и сборщиком мусора. Сборщик мусора упрощает разработку приложений и сокращает время написания кода за счет автоматического управления памятью. Опять же, сборщик мусора может справиться с проблемой утечки памяти, вызванной ошибками кодирования.

Сборка мусора - это автоматизированный механизм управления памятью. он просматривает память кучи, обнаруживает используемые объекты и удаляет те, на которые нет ссылок. Пространство, занятое неиспользуемыми/несвязанными объектами, очищается из памяти, и это увеличивает доступную свободную память. Механизм, выполняющий этот процесс, называется сборщиком мусора.

Чрезмерный размер кучи может использоваться для кэширования, однако большой размер кучи может вызвать паузы в сборщике мусора. Когда сборщик мусора останавливается, возврат к конечной точке может длиться очень долго.

При длительной паузе доступ не происходит в распределенных системах, таких как Elasticsearch, поскольку узел может быть изолирован от кластера. На этом узле нет операций чтения или записи. Если узел является главным узлом, можно выбрать новый главный узел. Если узел является узлом данных, это может привести к размещению сегментов в других узлах данных. В этом случае увеличивается сетевой трафик, операции ввода-вывода на диске и нагрузка на кластер.

Вкратце, если размер кучи меньше необходимого, могут возникнуть другие проблемы, помимо ошибок памяти.

Рекомендации по уменьшению/увеличению размера "кучи" 

  • Настоятельно рекомендуется, чтобы размер кучи не превышал половины общей памяти. Поэтому, если у вас 64ГБ памяти, вам не следует устанавливать размер кучи на 48ГБ
  • Размер кучи не рекомендуется превышать 32ГБ
  • По умолчанию Xms1g и Xmx1g составляют 1ГБ
  • Чтобы изменить размер кучи JVM, то нужно отредактировать файл по пути /etc/elasticsearch/jvm.options.


т.е. если вы хотите уменьшить потребление оперативной памяти, то просто выставляете, например, такие значения:

-Xms512m
-Xmx512m

Если же захочется увеличить, то вбиваем, например 4Гб:


-Xms4g
-Xmx4g

 После изменения настройки, перегрузите ES:


sudo service elasticsearch restart

Теперь можете замерить потребление Elasticsearch'ом памяти и убедиться, что настройки были сохранены.   


Что думаешь?

Евгений11.04.2023

Ха-ха, elasticsearch жрет оперативки без зазрения совести))

Валерий01.03.2023

Блин, спасибо за статью, как установили, думали, что происходит, почему серверу не хватает памяти, а потом оказалось что из коробки ElasticSearch потребляет много памяти и надо уменьшать

Категории
  • PHP 59
  • Заметки 12
  • Nginx 2
  • ИТ новости 2
  • Флуд 1
  • Видео 1
  • Архитектура 0
Делаем из мухи слона

sergeymukhin.com

персональный блог о веб-разработке от разработчика Сергея Мухина. Блог основан в 2018 году, и уделяет основное внимание последним тенденциям, учебным пособиям, статьям с отзывами, а также советам и рекомендациям, позволяющим начинающим девелоперам встать быстрее на правильную дорогу веб разработки.