Arrêt et redémarrage du serveur HTTP Apache


Redémarrage progressif

Signal: USR1 apachectl -k graceful

Le signal USR1 ou graceful fait que le processus parent conseille aux enfants de quitter après leur requête en cours (ou de quitter immédiatement sils « ne sert rien). Le parent relit ses fichiers de configuration et rouvre ses fichiers journaux. Au fur et à mesure que chaque enfant meurt, le parent le remplace par un enfant de la nouvelle génération de la configuration, qui commence immédiatement à traiter les nouvelles demandes.

Ce code est conçu pour toujours respecter la directive de contrôle de processus des MPM, de sorte que le nombre de processus et de threads disponibles pour servir les clients sera maintenu aux valeurs appropriées tout au long du processus de redémarrage. De plus, il respecte StartServers de la manière suivante: si après une seconde au moins StartServers de nouveaux enfants nont pas été créés, alors créez-en suffisamment pour prendre le relais. Par conséquent, le code essaie de maintenir à la fois le nombre denfants approprié pour la charge actuelle sur le serveur et de respecter vos souhaits avec le paramètre StartServers.

Utilisateurs de mod_status remarquera que les statistiques du serveur ne sont pas mises à zéro lorsquun USR1 est envoyé. Le code a été écrit à la fois pour minimiser le temps pendant lequel le serveur est incapable de répondre aux nouvelles requêtes (elles seront mises en file dattente par le système dexploitation, donc elles ne seront « perdues en aucun cas) et pour respecter vos paramètres de réglage. Afin de pour ce faire, il doit garder le tableau de bord utilisé pour garder une trace de tous les enfants à travers les générations.

Le module de statut utilisera également un G pour indiquer les enfants qui sont le traitement des requêtes a commencé avant le redémarrage normal.

À lheure actuelle, il nexiste aucun moyen pour un script de rotation de journal utilisant USR1 de savoir avec certitude que tous les enfants écrivent le journal de pré-redémarrage est terminé. Nous vous suggérons dutiliser un délai approprié après lenvoi du signal USR1 avant de faire quoi que ce soit avec lancien journal. Par exemple, si la plupart de vos appels prennent moins plus de 10 minutes pour les utilisateurs sur des liens à faible bande passante, vous pouvez alors attendre 15 minutes avant de faire quoi que ce soit avec lancien journal.

Lorsque vous lancez un redémarrage, une vérification de la syntaxe est dabord exécutée pour sassurer quil ny a pas derreurs dans les fichiers de configuration. Si votre fichier de configuration contient des erreurs, vous recevrez un message derreur concernant cette erreur de syntaxe et le serveur refusera de redémarrer. Cela évite la situation où le serveur sarrête puis ne peut pas redémarrer, vous laissant avec un serveur qui ne fonctionne pas.

Cela ne garantit toujours pas que le serveur redémarrera correctement. Pour vérifier la sémantique des fichiers de configuration ainsi que la syntaxe, vous pouvez essayer de démarrer httpd en tant quutilisateur non root. Sil ny a pas derreur, il tentera douvrir ses sockets et ses journaux et échouera car il « nest pas root (ou parce que httpd en cours dexécution a déjà ces ports liés). En cas déchec pour toute autre raison, cest probablement une erreur de fichier de configuration et lerreur doit être corrigée avant de lancer le redémarrage normal.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *