Ограничение на открытие файла супервизором не изменится при использовании Chef

Я изменяю /etc/security/limits.conf на машине, а затем устанавливаю Supervisor в рецепте Chef. После завершения выполнения рецепта, если я запускаю cat /proc/<process id>/limits, я вижу:

Limit                     Soft Limit           Hard Limit           Units     
Max cpu time              unlimited            unlimited            seconds   
Max open files            1024                 4096                 files

Если я войду в систему и запущу service supervisor restart, то максимальное количество открытых файлов будет установлено правильно. Однако, если я запускаю эту команду в рецепте (сразу после установки супервизора, в самом конце рецепта, что угодно), лимит не меняется. Только когда я войду в систему и вручную запущу эту команду, ограничение изменится.

Как я могу изменить лимит открытых файлов для супервайзера, используя рецепт шеф-повара? Операционная система — Ubuntu 12.04.


person Brad    schedule 13.01.2015    source источник


Ответы (3)


Любым усталым гуглерам: возможно, вы ищете параметр minfds в конфигурации супервизора. . Этот параметр действует как для супервизора, так и для детей. У меня был ряд других стратегий, в том числе запуск сценария оболочки, который устанавливал ограничения перед выполнением фактической программы, но это было единственное, что сработало.

person Dan    schedule 08.04.2015
comment
minfds определяет только минимум файловых дескрипторов, к которым имеет доступ супервизорный процесс. Если меньше указанного значения, supervisord не запустится. он не будет устанавливать разрешенные файлы для открытия для детей ... - person codewandler; 08.01.2016
comment
так в конфиге для программы поставил minfds = 100000 что ли нет? - person nadermx; 10.03.2016
comment
@codewandler Будет сделан вызов setrlimit, чтобы попытаться поднять мягкие и жесткие пределы контролируемого процесса, чтобы удовлетворить minfds. Жесткое ограничение может быть увеличено только в том случае, если супервизор запущен от имени пользователя root. - person Brandon Galbraith; 11.03.2016
comment
Стек потрясающий, вы потрясающие, комментарии потрясающие! - person Ashkan Kh. Nazary; 04.11.2017
comment
не забудьте sudo service supervisor restart - person Carson Ip; 13.01.2018

Я не тестировал на своем компьютере, потому что я не могу сейчас остановить супервизора. Но если вы измените порядок каталога /etc/rc?

# find /etc/rc* -iname "*super*"
/etc/rc0.d/K01supervisor
/etc/rc1.d/K01supervisor
/etc/rc2.d/S16supervisor
/etc/rc3.d/S16supervisor
/etc/rc4.d/S16supervisor
/etc/rc5.d/S16supervisor
/etc/rc6.d/K01supervisor

У меня та же проблема Supervisord и ulimit для java-приложения

person Felipe Gutierrez    schedule 19.01.2015

Реализация супервизора такова, что процесс может быть запущен как пользователь без полномочий root, с большим количеством привилегий, чем разрешено этому пользователю - в обход pam, limit.conf и т. д. Так что я сомневаюсь, что эта проблема будет исправлена. Взгляните на https://github.com/Supervisor/supervisor/pull/229

person Arun    schedule 22.03.2017