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