Повышение лимитов файлов для службы, а не для пользователя
Я видел различные посты о повышении лимита открытых файлов в системах Linux для конкретных пользователей (что выполняется различными способами в зависимости от того, о чем идет речь в дистрибутиве Linux).
У меня есть сервер Ubuntu 8.04.4 LTS под управлением Dovecot, под пользователем с именем "dovecot";
ps aux | grep dovecot
dovecot 473 0.0 0.0 14320 2152 ? S 12:11 0:00 imap-login
dovecot 1619 0.0 0.0 14324 2096 ? S Jan25 0:05 imap-login
dovecot 2652 0.0 0.0 14180 1892 ? S 13:44 0:00 pop3-login
dovecot 3627 0.0 0.0 14180 1892 ? S 14:13 0:00 pop3-login
dovecot 3776 0.0 0.0 14180 1892 ? S 14:16 0:00 pop3-login
dovecot 4056 0.0 0.0 14320 2112 ? S 14:19 0:00 imap-login
.....
ps aux | grep dovecot | wc
178
Как я могу поднять лимит открытого файла для службы? Выполняю ли я те же действия для повышения лимитов использования, когда пользователь запускает службу?
Поэтому в этой системе я мог бы увеличить ограничение в /etc/security/limits.conf для пользователя dovecot, но как это будет относиться к моему сервису. Нужно ли перезапустить службу, чтобы новые настройки вступили в силу, или, когда появятся новые процессы, они наследуют новые настройки?
Я не вижу, как изменение этого лимита будет связано с долгосрочным сервисом, а не с пользователем, который входит в систему и выходит из нее.
2 ответа
"Выполняю ли я те же действия для повышения лимитов использования, когда пользователь запускает службу?" - Да. Служба работает в соответствии с ограничениями пользователя, поэтому после того, как ограничения будут сняты и служба будет перезапущена, у нее появятся новые ограничения.
Для CentOS 7 (и я предполагаю, что любые другие системные преобразования) вам нужно отредактировать файл службы. Вы можете использовать это, чтобы просто переопределить служебный файл, чтобы он был безопасен для обновления:
systemctl edit dovecot.service
И затем добавьте:
[Service]
LimitNOFILE=4096
Измените 4096 на то, что вам нравится.