Pour avoir un état de la santé d'apache, j'utilise 2 outils qui sont complémentaires:
Apachetop est un outil en ligne de commande qui permet de voir le top 50 des pages servies par apache, la bande passante, les codes http, etc.. Pour le lancer, il faut lui spécifier le chemin de l'accesslog d'apache (en fait cela dépend des distribs et/ou des options de compilation)
exemple:
Apachetop -f /var/log/httpd/access.log
Mod_status est lui plutôt rustique, pas beau, mais tellement efficace ! On consulte un rapport directement via un navigateur.
Si ce n'est pas déjà fait, il faut commencer par l'activer (loadmodule dans httpd.conf) et le configurer (
SetHandler server-status et activer aussi ExtendedStatus tant qu'on y est toujours dans httpd.conf). Voir la doc apache
ici pour plus de détails. Comme pour toute modification de configuration Apache, ne pas oublier de faire un restart.
Exemple de config
LoadModule status_module modules/mod_status.so
ExtendedStatus On
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
Attention : la config ci dessus utilise du filtrage IP, du coup la page n'est accessible que sur la machine locale. Pour sécuriser on peut aussi mettre un htaccess/htpasswd en plus.
Ensuite on se rend sur la page http://localhost/server-status (ou autre suivant la config) et on obtient la fameuse page de rapport.
La partie la plus intéressante du rapport est en rouge ci dessous (et aussi la plus difficile à interpréter) :
- 1 requests currently being processed, 149 idle workers
________________________________________________________________
________________________________________________________________
_____________________W
Scoreboard Key:
"_" Waiting for Connection,
"S" Starting up,
"R" Reading Request,
"W" Sending Reply,
"K" Keepalive (read),
"D" DNS Lookup,
"C" Closing connection,
"L" Logging,
"G" Gracefully finishing,
"I" Idle cleanup of worker,
"." Open slot with no current process
On voit que le serveur n'est chargé ici, on a un maximum de symbole "_" et 1 seul "W" (normal je suis tout seul sur mon serveur !). En cas de problème de charge, c'est l'inverse ! très peu de "_" et beaucoup de "W",'R',"K" etc..
La solution à ce problème de charge est un peu au cas par cas, mais dans un premier temps, on peut augmenter facilement le nombre de workers Apache.