Расширенная настройка
Изменение расширенных настроек обычно не рекомендуется и может негативно повлиять на производительность и стабильность. В большинстве случаев рекомендуется использовать значения по умолчанию, предоставляемые Elasticsearch.
Установить параметры JVM
При необходимости можно переопределить параметры JVM по умолчанию, добавив пользовательские файлы параметров (предпочтительный вариант) или установив переменную среды ES_JAVA_OPTS.
Файлы параметров JVM должны иметь суффикс .options и содержать список аргументов JVM, разделённых по строкам. Процессы JVM обрабатывают файлы параметров в лексикографическом порядке.
Место расположения файлов параметров JVM зависит от типа установки:
- tar.gz или .zip: Добавьте пользовательские файлы параметров JVM в
config/jvm.options.d/. - Debian или RPM: Добавьте пользовательские файлы параметров JVM в
/etc/elasticsearch/jvm.options.d/. - Docker: Создайте точное подключение (bind mount) пользовательских файлов параметров JVM в
/usr/share/elasticsearch/config/jvm.options.d/.
Не изменяйте корневой файл jvm.options. Используйте файлы в jvm.options.d/ вместо него.
Синтаксис параметров JVM
Файл параметров JVM содержит список аргументов JVM, разделённых по строкам. Аргументы предваряются дефисом (-). Для применения настроек к определённым версиям, добавьте версию или диапазон версий, после чего поставьте двоеточие.
-
Применить настройку ко всем версиям:
-Xmx2g
-
Применить настройку к определённой версии:
8:-Xmx2g
-
Применить настройку к диапазону версий:
8-9:-Xmx2g
Чтобы применить настройку к определённой версии и всем последующим версиям, опустите верхнюю границу диапазона. Например, эта настройка применяется к Java 8 и более поздним версиям:
8-:-Xmx2g
Пустые строки игнорируются. Строки, начинающиеся с #, рассматриваются как комментарии и игнорируются. Строки, которые не являются комментариями и не распознаются как допустимые аргументы JVM, отклоняются, и Elasticsearch не запустится.
Использование переменных среды для установки параметров JVM
В производственной среде используйте файлы параметров JVM для переопределения значений по умолчанию. В тестовых и развивающихся средах вы также можете установить параметры JVM через переменную среды ES_JAVA_OPTS.
export ES_JAVA_OPTS="$ES_JAVA_OPTS -Djava.io.tmpdir=/path/to/temp/dir" ./bin/elasticsearch
Если вы используете пакеты RPM или Debian, вы можете указать ES_JAVA_OPTS в файле конфигурации системы sysconfig.
Elasticsearch игнорирует переменные среды JAVA_TOOL_OPTIONS и JAVA_OPTS.
Установить размер кучи JVM
По умолчанию Elasticsearch автоматически устанавливает размер кучи JVM, основываясь на ролях узла узла и общем объёме памяти. Для большинства производственных сред рекомендуется использовать автоматическое распределение.
Автоматическое распределение кучи требует использования встроенной JDK или, если используется пользовательское расположение JRE, JRE версии 14 или выше.
Для переопределения размера кучи по умолчанию, установите минимальный и максимальный размеры кучи, Xms и Xmx. Минимальное и максимальное значения должны быть одинаковыми.
Размер кучи должен быть основан на доступной оперативной памяти:
-
Установите
XmsиXmxне более чем на 50% от общего объёма памяти. Elasticsearch требует памяти для целей, отличных от кучи JVM. Например, Elasticsearch использует буферы вне кучи для эффективного сетевого взаимодействия и полагается на кэш файловой системы операционной системы для эффективного доступа к файлам. Сам JVM также требует некоторой памяти. Нормально, если Elasticsearch использует больше памяти, чем установленный предел с помощью параметраXmx.При выполнении в контейнере, таком как Docker, общий объём памяти определяется как количество памяти, видимое контейнером, а не общая системная память на хосте.
-
Установите
XmsиXmxне более, чем пороговое значение для сжатых обычных указателей объектов (oops). Точное пороговое значение варьируется, но 26 ГБ безопасно на большинстве систем и может достигать 30 ГБ на некоторых системах. Чтобы убедиться, что вы находитесь ниже порога, проверьте лог Elasticsearch на запись, подобную этой:heap size [1.9gb], compressed ordinary object pointers [true]
Или проверьте значение
jvm.using_compressed_ordinary_object_pointersдля узлов, используя API информации об узлах:GET _nodes/_all/jvm
Чем больше кучи доступно Elasticsearch, тем больше памяти он может использовать для своих внутренних кэшей. Это оставляет меньше памяти для использования операционной системой для кэша файловой системы. Более крупные кучи также могут привести к более длительным паузам сбора мусора.
Для настройки размера кучи добавьте аргументы JVM Xms и Xmx в пользовательский файл параметров JVM с расширением .options и сохраните его в каталоге jvm.options.d/. Например, для установки максимального размера кучи в 2 ГБ, установите и Xms и Xmx на 2g:
-Xms2g -Xmx2g
Для тестирования вы также можете установить размеры кучи, используя переменную среды ES_JAVA_OPTS:
ES_JAVA_OPTS="-Xms2g -Xmx2g" ./bin/elasticsearch
Переменная ES_JAVA_OPTS переопределяет все другие параметры JVM. Мы не рекомендуем использовать ES_JAVA_OPTS в производственной среде.
Если вы запускаете Elasticsearch в качестве службы Windows, вы можете изменить размер кучи с помощью диспетчера служб. См. Установку Elasticsearch в качестве службы на Windows.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/advanced-configuration.html