Gestion des signaux dans Apache2

On peut signaler apache de plusieurs façons. Voici un petit rappel des implications des unes et des autres.
Rappelons tout d'abord que l'on peut se contenter de signaler le processus père, les processus fils recevront également le signal, par construction.

- Le signal KILL (9) est juste ultra violent, et va juste forcer les process à quitter, le plus vite possible. Implications: le fichier de pid ne sera pas détruit, les requêtes seront abandonnées (potentiellement en pleins milieu), une connexion à une base de donnée pourrait rester ouverte etc ...

- Le signal TERM (15) termine l'execution proprement. Les requêtes sont terminées, mais les nouvelles ne sont plus acceptées (de fait, l'opération peut prendre plusieurs secondes). Le père envoie un signal HUP aux fils. Si ceux ci ne répondent pas, il en re-envoie un. Puis éventuellement un signal TERM, et enfin un KILL en dernier recours. Le fichier error_log est renseigné en conséquence. Quand les processus fils sont terminés, les fichiers sont fermés, et le processus père termine.

- Le signal HUP (1) demande à apache de redémarrer immédiatement. Les processus fils se voient signalé via un comme avec un signal TERM. Après la fin de l'execution de tous les processus fils, le père relit sa configuration, re-ouvre les fichiers de logs, re-crée un ensemble de processus et continue à servir des requêtes. En cas d'erreur dans la configuration, le processus père quitte. Il est donc important de vérifier la syntaxe de la config avant un HUP.
Ce signal correspond donc grosso modo à un stop et start.

- Le signal USR1 (30) demande à apache de redémarrer poliment. Si les processus fils traitent des requêtes, ils les terminent, sinon ils quittent immédiatement. Le processus père relit sa configuration, re-ouvre les fichiers de log.
Chaque processus fils qui termine est remplacé par un nouveau, qui utilise alors la nouvelle configuration. Ce processus est alors prêt à répondre à de nouvelles requêtes. La différence avec un HUP est donc que les processus enfants peuvent terminer leurs requêtes sans interruption de service.

Add new comment

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.