Graceful Shutdown des Server-Prozesses
Auf dieser Seite wird erläutert, wie ein laufender Server-Prozess mithilfe von Signalen elegant beendet werden kann.
Wenn der Server-Prozess mit Server.Run(Handler)
gestartet wird, blockiert er und wartet auf eingehende Signale.
Es gibt zwei Arten von Signalen, die an ein laufendes Programm gesendet werden können, um den Prozess ordnungsgemäß zu beenden.
-
TSTP: Dieses Signal fordert den
Server
auf, die Bearbeitung neuer Aufgaben zu stoppen. -
TERM oder INT: Dieses Signal fordert den
Server
auf, sich zu beenden (d.h. herunterzufahren).
Es wird empfohlen, zuerst das TSTP-Signal zu senden, um die Bearbeitung neuer Aufgaben zu stoppen, und auf die Beendigung aller laufenden Aufgaben zu warten, bevor das TERM-Signal zum Beenden des Programms gesendet wird.
Verwenden Sie den Befehl kill
, um Signale zu senden.
kill -TSTP # Stoppt die Bearbeitung neuer Aufgaben
kill -TERM # Beendet den Server
Anmerkung: Wenn das TERM- oder INT-Signal ohne vorheriges Senden des TSTP-Signals gesendet wird, startet der Server
einen Timer und wartet 8 Sekunden lang darauf, dass alle Arbeitskräfte ihre Arbeit abschließen (um diese Time-out-Dauer anzupassen, verwenden Sie die Konfiguration ShutdownTime
). Wenn innerhalb dieses Zeitraums noch unvollendete Arbeiten vorhanden sind, werden die Aufgaben wieder in den ausstehenden Zustand versetzt und beim Neustart des Programms erneut bearbeitet.
Anmerkung: Windows unterstützt derzeit das TSTP-Signal nicht.