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

Как выбрать между выскочкой, запуском, супервизором, инструментами демона ... для перезапуска процесса, если он умирает? (надзор / мониторинг процесса)

У меня есть веб-прокси Nginx, веб-сервер Gunicorn и веб-приложение python / flask. Процесс Gunicorn, очевидно, умер, и я хочу улучшить это в будущем, изучив утилиту, которая может отслеживать и перезапускать процесс Gunicorn в случае его повторного сбоя.

Я нашел несколько утилит для контроля процесса, которые могут выполнить эту работу:

Есть ли исчерпывающая статья, в которой сравниваются и сравниваются различные утилиты, используемые для мониторинга и перезапуска процесса?

https://en.wikipedia.org/wiki/Process_supervision

  • runit является преемником daemontools (оба написаны на c)

  • supervisord использует python.

Я использовал runit с участием socklog того же автора внутри Alpine Linux lxc контейнеры около 10 месяцев на управление web / database и различные другие услуги. Он легкий, простой в управлении, и у меня не было сбоев в обслуживании. Демон ведения журнала также работает как собственный пользователь, а не root что приятно.

voidlinux использует runit как это init система, а также для надзор за услугами (найдите в дереве пакетов run файлы для примеров runit скрипты).

Если в вашем дистрибутиве используется Upstart, используйте его. Он имеет очень базовую поддержку перезапуска задания, но включает ограничения, которые могут предотвратить цикл перезапуска, как упоминалось @EEAA.

Если ваша ОС использует другую программу инициализации, не меняйте ее. Я не могу помочь вам с другими инструментами, которые вы упомянули, поскольку я обычно использую Ubuntu, где Upstart все еще присутствует (начиная с последней версии LTS), поэтому я не имею к ним никакого отношения. Но создать простой скрипт, запускаемый из cron раз в минуту (или чаще, например, в цикле), который может проверять, существует ли PID, и запускать перезапуск в случае сбоя.