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?
upstart
supervisord
daemontools
runit
Matthew Moisen
fuente
fuente
Respuestas:
runit
es un sucesor dedaemontools
(ambos están escritosc
)supervisord
usospython
.He estado usando
runit
consocklog
el mismo autor en el interior Alpine Linuxlxc
contenedores por alrededor de 10 meses para gestionarweb
/database
y 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, loroot
cual es bueno.voidlinux usa
runit
comoinit
sistema y también para supervisión de servicio (busque en el árbol del paqueterun
archivos para ejemplos derunit
scripts).fuente
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.
fuente