Monit требует ручного перезапуска, чтобы получить максимальное количество открытых файлов для запуска процесса, ошибка?
Я пытался понять это в течение достаточно долгого времени, и я, кажется, не смогу найти какую-либо информацию по этому вопросу.
погрузимся в проблему:
Я запускаю приложение в Ubuntu 14.04 с использованием Monit V5.6 Развертывание приложения и Monit выполняется с использованием сценариев Chef с AWS Opsworks, который работает отлично.
Проблема заключается в том, что после этого Monit запускает приложение, используя следующий синтаксис:
start program = "/bin/sh -c 'ulimit -n 150000; <some more commands here which are not intersting>'" as uid <user> and gid <user_group>
Это действительно запускает приложение, используя правильного пользователя, но проблема в том, что max open files
для процесса показывает 4096 вместо числа, установленного в limits.conf
Просто чтобы прояснить, я установил следующее в /etc/security/limits.conf
root hard nofile 150000
root soft nofile 150000
* hard nofile 150000
* soft nofile 150000
Более того, если я останавливаю приложение, затем выполняю перезапуск службы, а затем запускаю приложение, максимальные значения открытых файлов принимаются правильно, и я вижу 150000. Если я затем повторно развертываю приложение без перезагрузки экземпляра, то это происходит снова, и я придется вручную перезапустить монитор снова.
Также, если я запускаю приложение, используя следующий синтаксис для имитации Monit:
sudo -H -u <user> /bin/sh -c 'ulimit -n 150000; <more commands here>'
Тогда все работает, и процесс получает правильное значение максимального количества открытых файлов. Я пытаюсь создать сценарий этого ручного перезапуска службы мониторинга с остановкой и запуском приложения с помощью сценариев Chef, после чего это тоже не получается, и я получаю 4096 в качестве значения максимального количества открытых файлов, поэтому мой единственный вариант - делать это вручную при каждом развертывании, что не очень удобно.,
Любая помощь на этот счет или мысли будет принята с благодарностью. Спасибо!
PS Я также рассмотрел следующие статьи:
https://serverfault.com/questions/797650/centos-monit-ulimit-not-working https://lists.nongnu.org/archive/html/monit-general/2010-04/msg00018.html
но так как ручной перезапуск Monit заставляет это работать, то я ищу решение без изменения сценариев инициализации.