Як я вибираю між запуском, runit, supervisor, daemontools і т. Д. Для перезапуску процесу, якщо він загине?


13

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

Я знайшов декілька, які можуть виконати цю роботу:

  • вискочити
  • пробіг
  • керівник
  • демомонтоли
  • набагато більше

Чи є вичерпна стаття, яка порівнює та протиставляє різні утиліти, які використовуються для моніторингу та перезапуску процесу?


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.

Якщо ваша ОС використовує іншу програму init, не змінюйте її. Я не можу допомогти вам з іншими згаданими вами інструментами, оскільки я зазвичай використовую Ubuntu там, де Upstart все ще присутній (станом на останній LTS), тому мені мало що з ними робити. Але це не складна задача створити простий скрипт, який запускається з cron один раз на хвилину (або частіше в циклі), який може перевірити, чи існує PID, і видати перезапуск при відмові.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.