«Память — важный, но ограниченный ресурс при работе с Elasticsearch. Это связано с тем, что Lucene будет использовать всю доступную память. Однако при неправильной настройке параметры памяти могут привести к снижению производительности и неэффективному использованию памяти».
В этом руководстве мы покажем вам максимальную и минимальную конфигурацию размера кучи JVM при работе с Elasticsearch.
Давайте начнем.
Что такое куча памяти?
В контексте Elasticsearch память кучи относится к общему объему памяти, выделенной виртуальной машине Java в узле Elasticsearch.
Elasticsearch по умолчанию устанавливает размер кучи JVM на основе общего объема памяти базовой системы и роли узла. Это означает, что распределение размера кучи памяти может варьироваться в зависимости от того, является ли это главным узлом, данными, приемом, data_cold и т. д.
Для большинства производственных сред рекомендуется разрешить Elasticsearch управлять размером кучи, и этого более чем достаточно.
ПРИМЕЧАНИЕ : если вы используете Elasticsearch в Docker, общий объем кучи зависит от общего размера контейнера Docker, а не хоста Docker.
Настройка минимального и максимального размера кучи
Чтобы настроить минимальный и максимальный размер кучи, мы можем использовать параметры Xms и Xmx. Пробиты Elasticsearch устанавливают максимальный объем памяти не более 50% от общего объема памяти. Это связано с тем, что помимо JVM Heap Elasticsearch требует больше памяти для других операций, таких как кеширование файловой системы, сетевое взаимодействие и т. д. Точно так же JVM будет использовать часть оставшихся 50% памяти.
Во-вторых, не устанавливайте значения xms и xmx выше порога oops. Для безопасной конфигурации ограничьте его до 26 ГБ или 30 ГБ в некоторых системах.
Вы можете проверить порог в журнале Elasticsearch.
cat elasticsearch.log | grep 'указатели на объекты'Вы должны увидеть запись, как показано ниже:
[2022-08-19T20:01:50,275][INFO ][o.e.e.NodeEnvironment ] [debian11] размер кучи [1,9 ГБ], сжатые обычные указатели на объекты [true][2022-08-19T20:08:07,207][INFO ][o.e.e.NodeEnvironment ] [debian11] размер кучи [1,9 ГБ], сжатые обычные указатели на объекты [true]
[2022-08-19T20:36:47,244][INFO ][o.e.e.NodeEnvironment ] [debian11] размер кучи [1,9 ГБ], сжатые обычные указатели на объекты [true]
Вы также можете запросить API информации об узлах для значений xms и xmx:
curl -X ПОЛУЧИТЬ локальный хост: 9200/_nodes/_all/jvm? довольноВы должны увидеть вывод, как показано ниже:
Установите минимальный и максимальный размер кучи
Чтобы изменить значения размера кучи JVM, вам необходимо добавить файл конфигурации в каталог /etc/elasticsearch/jvm.options.d. Этот файл должен заканчиваться расширением .options.
Например:
$ sudo touch /etc/elasticsearch/jvm.options.d/heap.optionsОтредактируйте файл
$ sudo nano /etc/elasticsearch/jvm.options.d/heap.optionsДобавьте желаемый минимальный и максимальный размер памяти кучи.
Например, запись ниже настраивает минимальный и максимальный размер кучи на 4 ГБ.
Сохраните файл и перезапустите службу Elasticsearch.
Вывод
В этом руководстве вы изучили кучу JVM в контексте Elasticsearch, как Elasticsearch настраивает кучу JVM и как вы можете изменить размер кучи.
Спасибо за чтение!!