Gracefulne wyłączanie procesu serwera
Ta strona przedstawia, jak skutecznie zamknąć działający proces serwera, korzystając ze znaków.
Gdy uruchamiasz przetwarzanie serwera za pomocą Server.Run(Handler)
, zablokuje się i będzie oczekiwać na przychodzące sygnały.
Istnieją dwa rodzaje sygnałów, które można wysłać do działającego programu, aby łagodnie wyłączyć proces.
-
TSTP: Ten sygnał mówi
Serwerowi
, aby przestał obsługiwac nowe zadania. -
TERM lub INT: Ten sygnał mówi
Serwerowi
, aby zakończyć (czyli zamknąć).
Zaleca się najpierw wysłanie sygnału TSTP, aby zatrzymać obsługę nowych zadań, poczekać aż wszystkie trwające zadania zostaną zakończone, zanim wyślesz sygnał TERM do zakończenia programu.
Użyj polecenia kill
, aby wysłać sygnały.
kill -TSTP # Odtwórz obsługę nowych zadań
kill -TERM # Zamknij serwer
Uwaga: Jeśli sygnał TERM lub INT zostanie wysłany bez wysłania sygnału TSTP, Serwer
uruchomi czasomierz i będzie czekał przez 8 sekund, aż wszyscy pracownicy zakończą (aby dostosować tę długość czasu oczekiwania, użyj konfiguracji ShutdownTime
). Jeśli w ciągu tego czasu jakieś zadania nie zostaną zakończone, zadania wrócą do stanu oczekującego i będą obsługiwane ponownie po ponownym uruchomieniu programu.
Uwaga: Obecnie system Windows nie obsługuje sygnału TSTP.