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.