Arrêt gracieux du processus serveur

Cette page présente comment arrêter gracieusement un processus serveur en cours d'exécution en utilisant des signaux.

Lorsque vous démarrez le traitement du serveur avec Server.Run(Handler), il bloquera et attendra les signaux entrants.

Il existe deux types de signaux qui peuvent être envoyés à un programme en cours d'exécution pour arrêter gracieusement le processus.

  • TSTP: Ce signal indique au Server d'arrêter de gérer de nouvelles tâches.
  • TERM ou INT: Ce signal indique au Server de se terminer (c'est-à-dire de s'arrêter).

Il est recommandé d'envoyer d'abord le signal TSTP pour arrêter de gérer de nouvelles tâches, et d'attendre que toutes les tâches en cours se terminent avant d'envoyer le signal TERM pour terminer le programme.

Utilisez la commande kill pour envoyer des signaux.

kill -TSTP  # Arrêter de gérer de nouvelles tâches

kill -TERM  # Arrêter le serveur

Remarque : Si le signal TERM ou INT est envoyé sans envoyer le signal TSTP, le Server démarrera un minuterie et attendra 8 secondes pour que tous les travailleurs se terminent (pour personnaliser cette durée d'expiration, utilisez la configuration ShutdownTime). Si des travailleurs ne sont pas terminés dans ce laps de temps, les tâches reviendront à l'état en attente et seront de nouveau gérées lors du redémarrage du programme.

Remarque : Actuellement, Windows ne prend pas en charge le signal TSTP.