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

Aliexpress IN

После установки Elasticsearch требуется настройка как Linux сервера, так и самого Elasticsearch.

Elasticsearch

Установка Elasticseach

Настройка службы Elasticsearch

Для корректного выделения памяти необходимо отредактировать файл /usr/lib/systemd/system/elasticsearch.service добавить следующий параметр

В секцию [Service] добавить параметр

LimitMEMLOCK=infinity

До 5 версии Elasticsearch включительно, секция Service располагалась в конце файла и можно было добавить строку в файл, теперь в конце расположена секция [install] и добовления в нее параметра LimitMEMLOCK приведет к аварийному завершению службы.

в файле /etc/default/elasticsearch необходимо раскоментировать строку

MAX_LOCKED_MEMORY=unlimited

для применения настроек, выполните команду

systemctl daemon-reload

так же необходимо убедиться, что в настройках самого Elastcisearch (/etc/elasticsearch/elasticsearch.yml) установлена (раскоментирована) опция

bootstrap.memory_lock: true

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

Оптимизация настроек Linux для Elasticsearch

Не отключайте файл подкачки (SWAP) в системе это не принесет какой либо пользы, только вред.

Для корректной работы Elasticsearch в системе надо внести небольшие изменения.

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

echo "vm.swappiness=10" >> /etc/sysctl.conf
echo "net.core.somaxconn=65535" >> /etc/sysctl.conf
echo "fs.file-max=518144" >> /etc/sysctl.conf
echo "vm.max_map_count=262144" >> /etc/sysctl.conf

для применения настроек выполните команду

sysctl -p

Увеличение лимитов для Elasticsearch

Для корректной работы, необходимо увеличить лимиты количество открываемых файлов. В противном случае при работе могут водникать проблемы к доступу к файлам данных Elasticsarch.

echo "elasticsearch - nofile 65535" >> /etc/security/limits.conf
echo "elasticsearch soft memlock unlimited" >> /etc/security/limits.conf
echo "elasticsearch hard memlock unlimited" >> /etc/security/limits.conf

Настройка выделения памяти под процесс Elasticsearch

Количество выделяемой памяти является суммой значений параметров Xms+Xmx.

Память необходимо выделять в мегабайтах, для того что бы избежать не корректного округления.

Размер выделяемой памяти не должен превышать 64GB. Из за особенностей работы java машины. Это не значит что система не будет работать при превышении данного показателя, но проблемы могут возникнуть при накоплении данных, связанные с утечкой памяти.

Открываем файл настроек

nano /etc/elasticsearch/jvm.options

Для указания потребления памяти, необходимо изменить опции запуска процесса -xms и -xmx

Пример настроек

-Xms8192m
-Xmx8192m

В данном случае Elasticsearch будет выделено 16 GB оперативной памяти.

-Xms32766m
-Xmx32766m

Elasticsearch будет выделено 64 GB оперативной памяти.

Elastcisearch может занять всю доступную память, необходимо оставлять свободной не менее 1 ГБ ОЗУ для данных операционной системы и других служб, в противном случае могут возникнуть проблемы быстродействия.

Применение настроек Elasticsearch

Для применения настроек, неообходимо перезапустить службу Elasticsearch

systemctl restart elasticsearch
Добавить комментарий