Перейти к основному содержимому
Версия: 4.0

Настройки операционной системы

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

Для большей стабильности и скорости работы Smart Monitor рекомендуется сделать предварительные настройки в операционной системе. В установщик встроена настройка системы и со стороны администратора не требуется никаких действий, за исключением необязательных параметров. В этом разделе приводим все используемые параметры модификации для ознакомления.

Настройка параметров процесса

Все используемые параметры требуют перечитывания параметров systemd и перезагрузки изменяемого процесса. Для этого нужно выполнить две команды в командной строке от root пользователя:

$ systemctl daemon-reload
$ systemctl restart opensearch.service

В данном примере мы перезагрузим процесс opensearch.service.

Все параметры, представленные в данном разделе, добавляются в блок SERVICE конфигурационного файла процесса systemd.

Open File Descriptors

По умолчанию в современных системах, в частности в RHEL, количество открытых файлов для одного процесса ограничено значением 1024. Для стабильной работы необходимо увеличить это количество до 65536:

LimitNOFILE=65535

Иногда указан ulimits, что переопределяет параметр выше, в этом случае нужно добавить для соответствующих пользователей (например, пользователю opensearch) в файле /etc/security/limits.conf следующие строки:

opensearch         soft    nofile           65535
opensearch hard nofile 65535

Number of Threads

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

LimitNPROC=4096

Virtual Memory Address Space

Виртуальное адресное пространство задаёт диапазон операционной системой для процесса, для стабильной работы у сервисов не должно быть ограничений. Задаётся параметром:

LimitAS=infinity

File Size

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

LimitFSIZE=infinity

Max Locked Memory

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

LimitMEMLOCK=infinity

Настройки Java

Мы вносим небольшие изменения в настройки Java, при использовании установщика эти настройки добавляются автоматически.

Параметр -Xms

Задаёт минимальное значение выделенной памяти для приложения Java. Значение указывается в мегабайтах или гигабайтах.

Обратите внимание!

Мы рекомендуем использовать значение равное половине имеющейся оперативной памяти на сервере.

Для сервера с оперативной памятью 16Гб конфигурация параметра будет следующий:

-Xms8g

Параметр -Xmx

Задаёт максимальное значение оперативной памяти для приложения Java. Значение указывается в мегабайтах или гигабайтах.

Обратите внимание!

Мы рекомендуем использовать значение равное половине имеющейся оперативной памяти на сервере.

Для сервера с оперативной памятью 16Гб конфигурация параметра будет следующий:

-Xmx8g

Глобальные настройки системы

Часть параметров нельзя применить только для одного процесса и производятся для всей системы в целом. В данном разделе все параметры задаются для ядра операционной системы и используется утилита sysctl для изменения этих параметров.

Эти параметры можно изменять до следующей перезагрузки, просто изменив определённый параметр:

sysctl -w vm.swappiness=1

Для сохранения изменений после перезагрузки требуется изменить конфигурационный файл /etc/sysctl.conf. Можно использовать директорию sysctl.d для создания отдельных конфигурационных файлов для удобства администрирования.

После изменения конфигурационного файла sysctl для применения изменений нужно или перезагрузить сервер, или выполнить в командной строке от пользователя с правами root:

sysctl -p

Отключение SWAP

Большинство операционных систем стараются хранить как можно больше кэшируемых данных в оперативной памяти, а уже не используемые данные сохраняет на диск в так называемый SWAP. Этот процесс может негативно влиять на скорость работы Smart Monitor.

Мы рекомендуем не отключать полностью SWAP, а только снизить до минимального значение swappiness, которое отвечает за процент оставшейся свободной оперативной памяти, после которого ОС будет записывать оперативные данные в SWAP. Это позволит иметь возможность использовать SWAP при критических и не стандартных нагрузках на сервер и позволит

Для изменения параметра нужно создать файл /etc/sysctl.d/00-opensearch.conf и добавить строку:

vm.swappiness = 1

Если требуется отключить SWAP полностью, то нужно сделать следующее. Выполнить команду для отключения использования swap до перезагрузки:

swapoff -a

Затем в файле /etc/fstab закомментировать все разделы swap:

#/dev/mapper/ol-swap none swap defaults 0 0

Увеличение количества индексов для процесса

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

Для изменения параметра нужно создать файл /etc/sysctl.d/00-opensearch.conf и добавить строчку:

vm.max_map_count=262144

Уменьшение количества повторных TCP-пакетов

В OpenSearch и Logstash для взаимодействия с различными системами открываются TCP соединения. При разрыве соединения ожидается повторная отправка пакетов. В Linux это число равно 15 и ожидание ответа возрастает по экспоненте, что может привести к долгой задержке (порядка 900 секунд) определения, что устройство больше не доступно.

Мы рекомендуем уменьшить это значение до 5 попыток, что примерно будет равно 6 секундам задержки при определении доступности устройства.

Для изменения параметра нужно создать файл /etc/sysctl.d/00-opensearch.conf и добавить строчку:

net.ipv4.tcp_retries2=5

Права доступа

Настройки firewall установщиком не выполняются. В конце установки будет предложен вариант настройки доступен для всех.

Настройка прав доступа

Для OpenSearch и OpenSearch Dashboards используется пользователь opensearch и группа opensearch. Для Logstash используется пользователь logstash и группа logstash.

Настройка SELinux

Изменение настроек не будет производиться при отключенном режиме SELinux, при других режимах работы - будут произведены изменения для директорий:

  • bin: system_u:object_r:bin_t:s0;
  • run: system_u:object_r:var_run_t:s0.

Необязательные параметры

Следующие параметры не модифицируются автоматически установщиком, изменять их в большинстве случаев не требуется и следует использовать с осторожностью и после проведения нагрузочного тестирования.

Отключение Transparent Huge Pages

Transparent Huge Pages — это система управления памятью Linux, которая снижает нагрузку на поиск буфера перевода (TLB) на компьютерах с большим объемом памяти за счет использования страниц памяти большего размера. В большинстве случаев отключать не требуется, особенно если на сервере установлен только OpenSearch, поскольку в настройках java мы используем параметры Xms и Xmx, а так же практически не используем swap.

Согласно частным исследованиям (issue 26551), не рекомендуется выставлять Transparent Huge Pages в значение madvise, при котором наблюдалось падение производительности OpenSearch.

Оригинальная документа на странице Red Hat: How to disable THP.

Для выключения механизма Transparent Huge Pages требуется добавить в файл /etc/default/grub в параметр GRUB_CMDLINE_LINUX следующую строку:

transparent_hugepage=never
ВАЖНО

Перед применением конфигурации требуется сохранить копию файла /boot/grub2/grub.cfg.

Для применения конфигурации требуется выполнить следующую команду, для BIOS-based:

grub2-mkconfig -o /boot/grub2/grub.cfg

Для UEFI-based:

grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

После этих действий следует перезагрузить сервер. Создаем tuned profile для переопределения всех конфигураций, влияющих THP.

Создадим папку и файл профиля:

mkdir /etc/tuned/myprofile-nothp
touch /etc/tuned/myprofile-nothp/tuned.conf

В файл добавляем следующий текст:

[main]
include= throughput-performance
[vm]
transparent_hugepages=never

После чего делаем файл исполняемым и применяем:

chmod +x /etc/tuned/myprofile-nothp/tuned.conf
tuned-adm profile myprofile-nothp

Перезагрузка системы не требуется.