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

13

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

Я нашел несколько, которые могут сделать эту работу:

  • выскочка
  • запустить его
  • руководитель
  • DAEMON Tools
  • многое другое

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

Мэтью Мойзен
источник
2
Вы действительно должны следить за этими службами извне, так как возникнут ситуации , когда вы попадете в цикл перезапуска и будете использовать все доступные ресурсы на вашем сервере.
EEAA
Напишите свой собственный код, чтобы сделать это именно так, как вы хотите. Это простая задача.
Райан Бабчишин

Ответы:

3
  • runitявляется преемником daemontools(оба написаны в c)

  • supervisordиспользует python.

Я использовал runitс socklogодним и тем же автором в контейнерах Alpine Linux lxc около 10 месяцев для управления web/ databaseи различными другими сервисами. Это легкий, простой в управлении и у меня не было сбоев в обслуживании. Демон регистрации также запускается от своего собственного пользователя, что не rootочень приятно.

voidlinux использует runitкак свою initсистему, так и для надзора за сервисами (ищите в runфайлах пакетов примеры runitскриптов).

Стюарт Кардалл
источник
2

Если ваш дистрибутив использует Upstart, продолжайте. Он имеет базовую поддержку перезапуска задания, но включает в себя ограничения, которые могут помешать циклу перезапуска, как упомянуто @EEAA.

Если ваша ОС использует другую программу инициализации, не меняйте ее. Я не могу помочь вам с другими инструментами, которые вы упомянули, так как я обычно использую Ubuntu, где Upstart все еще присутствует (по состоянию на последнюю версию LTS), поэтому я не имею к ним никакого отношения. Но это не сложная задача - создать простой скрипт, который запускается из cron раз в минуту (или чаще в т. Е. В цикле), который может проверить, существует ли PID, и выполнить перезапуск при сбое.

sam_pan_mariusz
источник