Elasticsearch Установить максимальный размер памяти

Elasticsearch Ustanovit Maksimal Nyj Razmer Pamati



«Память — важный, но ограниченный ресурс при работе с 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 и как вы можете изменить размер кучи.

Спасибо за чтение!!