Wie wähle ich zwischen Upstart, Runit, Supervisor, Daemontools usw. aus, um einen Prozess neu zu starten, wenn er abstirbt?

13

Ich habe einen Nginx-Webproxy, einen Gunicorn-Webserver und eine Python- / Kolben-Web-App. Der Gunicorn-Prozess ist anscheinend gestorben, und ich möchte dies in Zukunft verbessern, indem ich mir ein Dienstprogramm anschaue, das den Gunicorn-Prozess überwachen und neu starten kann, falls er erneut abstürzt.

Ich habe einige gefunden, die den Job erledigen können:

  • Emporkömmling
  • starte es
  • Supervisor
  • daemontools
  • viel mehr

Gibt es einen umfassenden Artikel, in dem die verschiedenen Dienstprogramme zum Überwachen und Neustarten eines Prozesses verglichen und gegenübergestellt werden?

Matthew Moisen
quelle
2
Sie sollten diese Dienste überwachen wirklich von außerhalb des Strafraums, wie Situationen wird entstehen , wenn Sie in eine Neustart - Schleife bekommen und verbrauchen alle verfügbaren Ressourcen auf dem Server.
EEAA
Schreiben Sie Ihren eigenen Code, um es genau so zu machen, wie Sie es möchten. Es ist eine leichte Aufgabe.
Ryan Babchishin

Antworten:

3
  • runitist ein Nachfolger von daemontools(beide sind geschrieben in c)

  • supervisordverwendet python.

Ich habe ungefähr 10 Monate lang runitmit socklogdemselben Autor in Alpine Linux- lxc Containern gearbeitet, um web/ databaseund verschiedene andere Dienste zu verwalten . Es ist leicht, einfach zu handhaben und ich hatte keine Service-Ausfälle. Der Protokollierungsdämon wird auch als eigener Benutzer ausgeführt und nicht, rootwas nett ist.

voidlinux wird runitals initSystem und auch zur Überwachung von Diensten verwendet (durchsuchen Sie den Paketbaum nach runDateien, um Beispiele für runitSkripte zu finden).

Stuart Cardall
quelle
2

Wenn Ihre Distribution Upstart verwendet, fahren Sie damit fort. Es bietet grundlegende Unterstützung für den Neustart von Jobs, enthält jedoch Einschränkungen, die einen Neustart der Schleife verhindern können, wie von @EEAA erwähnt.

Wenn Ihr Betriebssystem ein anderes Init-Programm verwendet, ändern Sie es nicht. Bei den anderen Tools, die Sie erwähnt haben, kann ich Ihnen nicht wirklich helfen, da ich normalerweise Ubuntu verwende, auf dem Upstart noch vorhanden ist (Stand der neuesten LTS). Ich habe also wenig damit zu tun. Es ist jedoch keine schwierige Aufgabe, ein einfaches Skript zu erstellen, das von cron einmal pro Minute (oder häufiger in einer Schleife) ausgeführt wird und das überprüfen kann, ob eine PID vorhanden ist, und bei einem Fehler einen Neustart auslösen kann.

sam_pan_mariusz
quelle