J'ai un proxy web Nginx, un serveur web gunicorn et une application web python / flask. Le processus Gunicorn est apparemment mort, et je veux améliorer cela à l'avenir en recherchant un utilitaire qui peut surveiller et redémarrer le processus gunicorn en cas de nouvelle panne.
J'en ai trouvé plusieurs qui peuvent faire le travail:
- parvenu
- exécuter
- superviseur
- Daemon Tools
- beaucoup plus
Existe-t-il un article complet comparant et contrastant les différents utilitaires utilisés pour surveiller et redémarrer un processus?
upstart
supervisord
daemontools
runit
Matthew Moisen
la source
la source
Réponses:
runit
est un successeur dedaemontools
(les deux sont écrits enc
)supervisord
utilisepython
.J'utilise
runit
avecsocklog
le même auteur dans deslxc
conteneurs Alpine Linux depuis environ 10 mois pour gérerweb
/database
et divers autres services. Il est léger, facile à gérer et je n'ai eu aucune panne de service. Le démon de journalisation fonctionne également comme son propre utilisateur et nonroot
ce qui est bien.voidlinux utilise
runit
commeinit
système et également pour la supervision des services (recherchez desrun
exemples derunit
scripts dans l'arborescence des packages ).la source
Si votre distribution utilise Upstart, allez-y. Il a un support très basique pour le redémarrage des travaux, mais comprend des limites qui peuvent empêcher la boucle de redémarrage, comme mentionné par @EEAA.
Si votre système d'exploitation utilise un autre programme init, ne le changez pas. Je ne peux pas vraiment vous aider avec les autres outils que vous avez mentionnés, car j'utilise généralement Ubuntu où Upstart est toujours présent (à partir du dernier LTS), donc j'ai peu à voir avec eux. Mais ce n'est pas une tâche difficile de créer un script simple qui est exécuté à partir de cron une fois par minute (ou plus fréquemment dans une boucle, par exemple), qui peut vérifier si un PID existe et émettre un redémarrage en cas d'échec.
la source