Comment choisir entre upstart, runit, supervisor, daemontools, etc. pour redémarrer un processus s'il meurt?


13

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?


2
Vous devriez vraiment surveiller ces services depuis l'extérieur de la boîte, car des situations se produiront lorsque vous entrerez dans une boucle de redémarrage et consommerez toutes les ressources disponibles sur votre serveur.
EEAA

Écrivez votre propre code pour le faire exactement comme vous le souhaitez. C'est une tâche facile.
Ryan Babchishin

Réponses:


3
  • runitest un successeur de daemontools(les deux sont écrits en c)

  • supervisordutilise python.

J'utilise runitavec socklogle même auteur dans des lxc conteneurs Alpine Linux depuis environ 10 mois pour gérer web/ databaseet 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 non rootce qui est bien.

voidlinux utilise runitcomme initsystème et également pour la supervision des services (recherchez des runexemples de runitscripts dans l'arborescence des packages ).


2

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.