У меня есть веб-прокси Nginx, веб-сервер gunicorn и веб-приложение на python / flask. Процесс Gunicorn, очевидно, умер, и я хочу улучшить его в будущем, изучив утилиту, которая может отслеживать и перезапускать процесс Gunicorn в случае его повторного сбоя.
Я нашел несколько, которые могут сделать эту работу:
- выскочка
- запустить его
- руководитель
- DAEMON Tools
- многое другое
Существует ли всеобъемлющая статья, которая сравнивает и сравнивает различные утилиты, используемые для мониторинга и перезапуска процесса?
upstart
supervisord
daemontools
runit
Мэтью Мойзен
источник
источник
Ответы:
runit
является преемникомdaemontools
(оба написаны вc
)supervisord
используетpython
.Я использовал
runit
сsocklog
одним и тем же автором в контейнерах Alpine Linuxlxc
около 10 месяцев для управленияweb
/database
и различными другими сервисами. Это легкий, простой в управлении и у меня не было сбоев в обслуживании. Демон регистрации также запускается от своего собственного пользователя, что неroot
очень приятно.voidlinux использует
runit
как своюinit
систему, так и для надзора за сервисами (ищите вrun
файлах пакетов примерыrunit
скриптов).источник
Если ваш дистрибутив использует Upstart, продолжайте. Он имеет базовую поддержку перезапуска задания, но включает в себя ограничения, которые могут помешать циклу перезапуска, как упомянуто @EEAA.
Если ваша ОС использует другую программу инициализации, не меняйте ее. Я не могу помочь вам с другими инструментами, которые вы упомянули, так как я обычно использую Ubuntu, где Upstart все еще присутствует (по состоянию на последнюю версию LTS), поэтому я не имею к ним никакого отношения. Но это не сложная задача - создать простой скрипт, который запускается из cron раз в минуту (или чаще в т. Е. В цикле), который может проверить, существует ли PID, и выполнить перезапуск при сбое.
источник