Назад | Перейти на главную страницу

Ограничения настроены, но не применяются к демону

На моем CentOS 7 я использую cat /proc/<pid>/limits чтобы увидеть установленный предел фактического топлива. Я получил подтверждение, что этот метод здесь полностью точен, потому что я использую его в MySQL, который не может выгружать конкретную базу данных с более чем 8000 таблиц в ней. Если, используя prlimit Ставлю 10000, дамп успешно завершается.

Теперь я бы хотел избежать использования prlimit, поэтому я настроил файл /etc/security/limits.conf в соответствии со своими потребностями, и если я запустил bash с соответствующим пользователем (mysql), я смогу увидеть правильное значение ограничения. при беге ulimit -a.

Проблема в том, что для процесса mysqld, запущенного пользователем mysql, по-прежнему установлено значение по умолчанию (здесь 1024), что приводит к сбою при сбросе базы данных. Единственное решение, которое у меня есть, - запустить prlimit во время выполнения, но я хотел бы понять, чего не хватает, чтобы мои процессы учитывали конфигурацию ограничений при запуске.

В конце концов обнаружил проблему: ограничения обрабатываются Systemd, мне пришлось создать файл /etc/systemd/system/mariadb.service.d/limits.conf с содержимым:

[Service] 
LimitNOFILE=10000

Итак, главное помнить: systemd совершенно не заботится о файлах / etc / security / limits *.