У меня есть веб-прокси Nginx, веб-сервер Gunicorn и веб-приложение python / flask. Процесс Gunicorn, очевидно, умер, и я хочу улучшить это в будущем, изучив утилиту, которая может отслеживать и перезапускать процесс Gunicorn в случае его повторного сбоя.
Я нашел несколько утилит для контроля процесса, которые могут выполнить эту работу:
Есть ли исчерпывающая статья, в которой сравниваются и сравниваются различные утилиты, используемые для мониторинга и перезапуска процесса?
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, и запускать перезапуск в случае сбоя.