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

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

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

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

  • DAEMON Tools
  • launchd
  • запустить его
  • с6
  • руководитель
  • СистемаD
  • выскочка
  • ...

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

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

решение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 и выполнить перезапуск в случае сбоя.

Связанный контент