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