¿Cómo elijo entre upstart, runit, supervisor, daemontools, etc. para reiniciar un proceso si muere?

13

Tengo un proxy web Nginx, un servidor web gunicorn y una aplicación web python / flask. El proceso de Gunicorn aparentemente murió, y quiero mejorar eso en el futuro buscando una utilidad que pueda monitorear y reiniciar el proceso de gunicorn en caso de que vuelva a fallar.

He encontrado varios que pueden hacer el trabajo:

  • advenedizo
  • ejecutarlo
  • supervisor
  • Daemon Tools
  • mucho mas

¿Existe un artículo completo que compare y contraste las diversas utilidades utilizadas para monitorear y reiniciar un proceso?

Matthew Moisen
fuente
2
Realmente debería estar monitoreando estos servicios desde el primer momento, ya que surgirán situaciones en las que entrará en un ciclo de reinicio y consumirá todos los recursos disponibles en su servidor.
EEAA
Escriba su propio código para hacerlo exactamente de la manera que desee. Es una tarea fácil.
Ryan Babchishin el

Respuestas:

3
  • runites un sucesor de daemontools(ambos están escritos c)

  • supervisordusos python.

He estado usando runitcon socklogel mismo autor en el interior Alpine Linux lxc contenedores por alrededor de 10 meses para gestionar web/ databasey varios otros servicios. Es ligero, fácil de administrar y no he tenido fallas en el servicio. El demonio de registro también se ejecuta como usuario propio y no, lo rootcual es bueno.

voidlinux usa runitcomo initsistema y también para supervisión de servicio (busque en el árbol del paquete runarchivos para ejemplos de runitscripts).

Stuart Cardall
fuente
2

Si tu distribución usa Upstart, ve con ella. Tiene un soporte muy básico para el reinicio del trabajo, pero incluye límites que pueden evitar el bucle de reinicio, como lo menciona @EEAA.

Si su sistema operativo utiliza otro programa de inicio, no lo cambie. Realmente no puedo ayudarte con las otras herramientas que mencionaste, ya que generalmente uso Ubuntu donde Upstart todavía está presente (a partir de la última LTS), así que tengo poco que ver con ellas. Pero no es una tarea difícil crear un script simple que se ejecute desde cron una vez por minuto (o más frecuentemente en un ciclo), que puede verificar si existe un PID y emitir un reinicio en caso de falla.

sam_pan_mariusz
fuente