Arrêtez Apache gracieusement

24

Existe-t-il un moyen d'arrêter le serveur Apache sans terminer l'exécution des requêtes, essentiellement un moyen de le dire - n'acceptez plus de connexions et fermez-vous lorsque vous avez terminé vos connexions actuelles?

php_nub_qq
la source

Réponses:

12

Utilisez apachectl -k graceful-stopd' ici :

Le signal WINCH ou graceful-stop oblige le processus parent à conseiller aux enfants de quitter après leur demande en cours (ou de quitter immédiatement s'ils ne servent rien). Le parent supprimera alors son PidFile et cessera d'écouter sur tous les ports. Le parent continuera à s'exécuter et surveillera les enfants qui traitent les demandes. Une fois que tous les enfants ont finalisé et quitté ou que le délai spécifié par GracefulShutdownTimeout a été atteint, le parent quitte également.

Miller
la source
1

Gardez à l'esprit que sys-v init faisait par défaut un arrêt gracieux et avait forcé l'arrêt comme option supplémentaire. Une option «spéciale» pour arrêter gracieusement n'est nécessaire que si vous exécutez un gestionnaire de processus personnalisé qui tue normalement les processus.

John Keates
la source
Cette réponse pourrait donner l'impression que, systemdn'étant pas un gestionnaire de processus personnalisé, il ne tue pas le processus. Cependant, par défaut, systemd effectue également un stoppas graceful-stoppour apache.
B. Miller
4
@ B.Miller si votre systemd effectue un arrêt au lieu d'un arrêt gracieux, c'est un bogue spécifique au système d'exploitation qui doit être enregistré. Arch Linux et CentOS 7 effectuent tous deux des arrêts gracieux.
Harald
Debian fait aussi un arrêt gracieux
John Keates
2
Intéressant @JohnKeates ... c'est peut-être spécifique à Ubuntu 18.04. 18.04 utilise la commande d'arrêt/usr/sbin/apachectl stop
B. Miller