Tengo un proxy web Nginx, un servidor web gunicorn y una aplicación web python/flask. El proceso Gunicorn aparentemente murió, y quiero mejorar eso en el futuro investigando una utilidad que pueda monitorear y reiniciar el proceso Gunicorn en caso de que vuelva a fallar.
Encontré varias utilidades de supervisión de procesos que pueden hacer el trabajo:
- Daemon Tools
- lanzado
- ejecutarlo
- s6
- supervisor
- SistemaD
- advenedizo
- ...
¿Existe un artículo completo que compare y contraste las diversas utilidades utilizadas para monitorear y reiniciar un proceso?
Respuesta1
runit
es sucesor dedaemontools
(ambos están escritos enc
)supervisord
usospython
.
He estado usando runit
con socklog
del mismo autor dentro.Linux alpino lxc
contenedores durante unos 10 meses para gestionar web
/ database
y otros servicios varios. Es liviano, fácil de administrar y no he tenido fallas en el servicio. El demonio de registro también se ejecuta como su propio usuario y no root
es bueno.
vacíolinuxutiliza runit
como init
sistema y también parasupervisión de servicio(busque archivos en el árbol de paquetes run
para ver ejemplos de runit
scripts).
Respuesta2
Si su distribución usa Upstart, hágalo. Tiene soporte muy básico para reiniciar trabajos, 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 del último LTS), por lo que tengo poco que ver con ellas. Pero no es una tarea difícil crear un script simple que se ejecute desdecronuna vez por minuto (o con más frecuencia, es decir, en un bucle), que puede verificar si existe un PID y emitir un reinicio en caso de falla.