Как изменить максимальный объем памяти Elasticsearch
У меня есть сервер Apache с конфигурацией по умолчанию Elasticsearch, и все работает отлично, за исключением того, что конфигурация по умолчанию имеет максимальный размер 1 ГБ.
У меня нет такого большого количества документов для хранения в Elasticsearch, поэтому я хочу уменьшить объем памяти.
Я видел, что я должен изменить -Xmx
параметр в конфигурации Java, но я не знаю, как.
Я видел, что могу выполнить это:
bin/ElasticSearch -Xmx=2G -Xms=2G
Но когда мне придется перезапустить Elasticsearch, это будет потеряно.
Можно ли изменить максимальное использование памяти, когда Elasticsearch установлен в качестве службы?
19 ответов
В ElasticSearch >= 5 документация изменилась, что означает, что ни один из приведенных выше ответов не работал для меня.
Я пытался изменить ES_HEAP_SIZE
в /etc/default/elasticsearch
И в etc/init.d/elasticsearch
, но когда я побежал ps aux | grep elasticsearch
вывод еще показал:
/usr/bin/java -Xms2g -Xmx2g # aka 2G min and max ram
Я должен был сделать эти изменения в:
/etc/elasticsearch/jvm.options
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms1g
-Xmx1g
# the settings shipped with ES 5 were: -Xms2g
# the settings shipped with ES 5 were: -Xmx2g
Обновлено 24 ноября 2016 г.: Elasticsearch 5, по-видимому, изменил способ настройки JVM. Смотрите этот ответ здесь. Ответ ниже по-прежнему относится к версиям <5.
tirdadc, спасибо, что указали на это в своем комментарии ниже.
У меня есть страница с наклейками, которой я делюсь с другими, когда задаюсь вопросом о памяти и ES. Для меня все работает нормально: http://pastebin.com/mNUGQCLY. Я также вставлю сюда содержимое:
Рекомендации:
https://github.com/grigorescu/Brownian/wiki/ElasticSearch-Configuration http://www.elasticsearch.org/guide/reference/setup/installation/
Отредактируйте следующие файлы, чтобы изменить ограничения памяти и номера файлов. В этих инструкциях предполагается, что Ubuntu 10.04 может работать в более поздних версиях и других дистрибутивах / ОС. (Изменить: это работает и для Ubuntu 14.04.)
/etc/security/limits.conf:
elasticsearch - nofile 65535
elasticsearch - memlock unlimited
/ etc / default /asticsearch (для CentOS/RH: /etc/sysconfig/asticsearch):
ES_HEAP_SIZE=512m
MAX_OPEN_FILES=65535
MAX_LOCKED_MEMORY=unlimited
/etc/elasticsearch/elasticsearch.yml:
bootstrap.mlockall: true
Создайте новый файл с расширением
.options
внутри
/etc/elasticsearch/jvm.options.d
и выложи туда варианты. Например:
sudo nano /etc/elasticsearch/jvm.options.d/custom.options
и поместите туда контент:
# JVM Heap Size - see /etc/elasticsearch/jvm.options
-Xms2g
-Xmx2g
Он установит максимальный размер кучи на 2 ГБ. Не забудьте перезапустить elasticsearch:
sudo systemctl restart elasticsearch
Теперь вы можете проверить логи:
sudo cat /var/log/elasticsearch/elasticsearch.log | grep "heap size"
Вы увидите что-то вроде этого:
…
heap size [2gb], compressed ordinary object pointers [true]
Для тех, кто хочет сделать это на Centos 7 или на другой системе с SystemD, вы можете изменить его
/etc/sysconfig/elasticsearch
Раскомментируйте строку ES_HEAP_SIZE и установите значение, например:
# Heap Size (defaults to 256m min, 1g max)
ES_HEAP_SIZE=16g
(Игнорируйте комментарий о 1g max - это по умолчанию)
Инструкции для ubuntu 14.04
:
sudo vim /etc/init.d/elasticsearch
Задавать
ES_HEAP_SIZE=512m
затем в:
sudo vim /etc/elasticsearch/elasticsearch.yml
Задавать:
bootstrap.memory_lock: true
Есть комментарии в файлах для получения дополнительной информации
Предыдущих ответов в моем случае было недостаточно, возможно, потому что я нахожусь на Debian 8, в то время как они были упомянуты в каком-то предыдущем выпуске.
В Debian 8 измените сервисный скрипт, обычно размещаемый в /usr/lib/systemd/system/elasticsearch.service
, и добавить Environment=ES_HEAP_SIZE=8G
чуть ниже других строк "Environment=*".
Теперь перезагрузите служебный скрипт systemctl daemon-reload
и перезапустите сервис. Работа должна быть сделана!
Если вы используете служебную оболочку, предоставляемую в репозитории Elasticsearch Github, расположенную по адресу https://github.com/elasticsearch/elasticsearch-servicewrapper, то файл conf в файле asticsearch-servicewrapper / service /asticsearch.conf контролирует параметры памяти. В верхней части asticsearch.conf находится параметр:
set.default.ES_HEAP_SIZE=1024
Просто уменьшите этот параметр, скажем, до "set.default.ES_HEAP_SIZE=512", чтобы уменьшить выделенную память Elasticsearch.
Обратите внимание, что если вы используете оболочку эластичного поиска, то ES_HEAP_SIZE, представленный в asticsearch.conf, ОБЗОРУЕТ ВСЕ ДРУГИЕ НАСТРОЙКИ. Это заняло у меня немного времени, чтобы понять, так как из документации казалось, что куча памяти может быть установлена из asticsearch.yml.
Если ваши настройки оболочки сервиса установлены где-то еще, например, в / etc / default /asticsearch, как в примере с Джеймсом, тогда установите ES_HEAP_SIZE там.
Если вы установили ES с использованием пакетов RPM/DEB, как указано (как вы, кажется, имеете), вы можете изменить это, отредактировав скрипт init (/etc/init.d/elasticsearch on RHEL/CentOS
). Если вы посмотрите в файл, вы увидите блок со следующим:
export ES_HEAP_SIZE
export ES_HEAP_NEWSIZE
export ES_DIRECT_SIZE
export ES_JAVA_OPTS
export JAVA_HOME
Чтобы настроить размер, просто измените ES_HEAP_SIZE
строка к следующему:
export ES_HEAP_SIZE=xM/xG
(где x - это количество МБ / ГБ ОЗУ, которое вы хотите выделить)
Пример:
export ES_HEAP_SIZE=1G
Выделил бы 1 ГБ.
После того, как вы отредактировали скрипт, сохраните и выйдите, затем перезапустите сервис. Вы можете проверить правильность настройки, выполнив следующее:
ps aux | grep elasticsearch
И проверка флагов -Xms и -Xmx в процессе Java, который возвращает:
/usr/bin/java -Xms1G -Xmx1G
Надеюсь это поможет:)
- Elasticsearch назначит всю кучу, указанную в jvm.options, с помощью настроек Xms (минимальный размер кучи) и Xmx (максимальный размер кучи).
- -Xmx12g
- -Xmx12g
- Установите минимальный размер кучи (Xms) и максимальный размер кучи (Xmx) равными друг другу.
Не устанавливайте Xmx выше предельного значения, которое JVM использует для сжатых указателей объектов (сжатых значений), точное предельное значение варьируется, но составляет около 32 ГБ.
Также можно установить размер кучи через переменную окружения.
- ES_JAVA_OPTS = "- Xms2g -Xmx2g"./bin/elasticsearch
- ES_JAVA_OPTS = "- Xms4000m -Xmx4000m"./bin/elasticsearch
Путь к файлу для изменения размера кучи
/etc/elasticsearch/jvm.options
Если вы используете nano, сделайте
sudo nano /etc/elasticsearch/jvm.options
и обновить
-Xms
а также
-Xmx
соответственно.
(Вы можете использовать любой редактор файлов для редактирования)
В эластичном поиске путь домой реж /usr/share/elasticsearch
, Есть файл конфигурации bin/elasticsearch.in.sh
, Изменить параметр ES_MIN_MEM
, ES_MAX_MEM
в этом файле поменять -Xms2g
, -Xmx4g
соответственно. И, пожалуйста, убедитесь, что вы перезапустили узел после этого изменения конфигурации.
Oneliner для Centos 7 и Elasticsearch 7 (2 г = 2 ГБ)
$ echo $'-Xms2g\n-Xmx2g' > /etc/elasticsearch/jvm.options.d/2gb.options
а потом
$ service elasticsearch restart
Если вы используете docker-compose для запуска кластера ES:
- Открытым
<your docker compose>.yml
файл - Если вы установили
volumes
собственность, вы ничего не потеряете. В противном случае вы должны сначала переместить индексы. - Ищите это значение
ES_JAVA_OPTS
подenvironment
и измените значение во всех узлах, результат может быть примерно таким, как"ES_JAVA_OPTS=-Xms2g -Xmx2g"
- перестроить все узлы
docker-compose -f <your docker compose>.yml up -d
В asticsearch 2.x:
vi /etc/sysconfig/elasticsearch
Перейти к блоку кода
# Heap size defaults to 256m min, 1g max
# Set ES_HEAP_SIZE to 50% of available RAM, but no more than 31g
#ES_HEAP_SIZE=2g
Раскомментируйте последнюю строку как
ES_HEAP_SIZE=2g
Если вы используете сервер Windows, вы можете изменить переменную среды, перезапустить сервер, чтобы применить новое значение среды и запустить Elastic Service. Подробнее об установке Elastic в Windows Server
Если вы используете Ubuntu 15.04+ или любой другой дистрибутив, использующий systemd, вы можете установить максимальный размер памяти, отредактировав службу elasticsearch systemd и установив максимальный размер памяти с помощью переменной среды ES_HEAP_SIZE. Я протестировал его с помощью Ubuntu 20.04, и он отлично работает:
systemctl edit elasticsearch
Добавьте переменную среды ES_HEAP_SIZE с желаемым максимальным объемом памяти, например, 2 ГБ:
[Service]
Environment=ES_HEAP_SIZE=2G
Перезагрузите демон systemd
systemd daemon-reload
Затем перезапустите эластичный поиск
systemd restart elasticsearch
Чтобы проверить, работает ли он так, как ожидалось:
systemd status elasticsearch
Вы должны увидеть в статусе
-Xmx2G
:
CGroup: /system.slice/elasticsearch.service
└─2868 /usr/bin/java -Xms2G -Xmx2G
Обновить эластичную конфигурацию в пути
/etc/elasticsearch/jvm.options
################################################################
## IMPORTANT: JVM heap size
################################################################
##
## The heap size is automatically configured by Elasticsearch
## based on the available memory in your system and the roles
## each node is configured to fulfill. If specifying heap is
## required, it should be done through a file in jvm.options.d,
## and the min and max should be set to the same value. For
## example, to set the heap to 4 GB, create a new file in the
## jvm.options.d directory containing these lines:
##
## -Xms4g
## -Xmx4g
##
## See https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html
## for more information
##
################################################################
-Xms1g
-Xmx1g
Эти конфигурации означают, что вы выделяете 1 ГБ ОЗУ для службы elasticsearch.
Эластичный поиск
7.x
и выше, проверено с
Ubuntu 20
Создайте файл в
/etc/elasticsearch/jvm.options.d
. Имя файла должно заканчиваться на.options
Например
heap_limit.options
Добавьте эти строки в файл
-Xms1g
# Начальное выделение памяти-Xmx1g
# Максимальное выделение памятиПерезапустите службу эластичного поиска
sudo service elasticsearch restart
или же
sudo systemctl restart elasticsearch
окно 7 elasticsearch эластичный поиск проблема памяти elasticsearch-7.14.1\config\jvm.options
добавьте это
-Xms1g -Xmx1g
elasticsearch-7.14.1 \ config \ elasticsearch.yml
раскомментируйте bootstrap.memory_lock: true
и вредитель https://github.com/elastic/elasticsearch-servicewrapper скачать служебный файл и вредитель lasticsearch-7.14.1 \ bin
bin \ elasticsearch.bat введите