Перейти к содержанию

Настройка Systemd

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

См. также:

Настройки при этом будут применяться для каждого инстанса кластера.

Настройка лимитов в инвентарном файле

По умолчанию для Systemd-службы Picodata выставлены следующие параметры:

  LimitNOFILE: 65535        # Increase fd limit for Vinyl
  LimitCORE: infinity       # Unlimited coredump filesize
  TimeoutStartSec: 86400s   # Systemd waits until all xlogs are recovered
  TimeoutStopSec: 20s       # Give a reasonable amount of time to close xlogs

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

Пример фрагмента инвентарного файла с определением словаря systemd_params:

all:
  vars:
    systemd_params:
      LimitNOFILE: 900000
      TimeoutStartSec: '30m'

Системные ограничения

Некоторые параметры не могут иметь значение выше установленного в операционной системе, поэтому для их выставления предварительно нужно увеличить системные параметры через sysctl или limits.conf.

Например, параметр LimitNOFILE не может превышать системное значение fs.nr_open— если вы хотите выставить большее значение, то предварительно нужно изменить значение в системе:

Узнать текущее значение:

sysctl fs.nr_open

Отредактируйте файл /etc/sysctl.conf (при отсутствии создайте его), выставив в нем увеличенное значение параметра fs.nr_open. Например:

sudo -i
echo "fs.nr_open=999999" >> /etc/sysctl.conf

Примените измененные значения:

sudo sysctl -p

Читайте далее:

Проверка лимитов

Лимиты, выставленные для процесса, можно получить командой:

cat /proc/<MainPID>/limits

Значение MainPID вы можете получить из вывода команды:

systemctl show --property=MainPID picodata

где picodata — имя службы инстанса.