mardi 27 août 2013

Statistiques et charge Apache en live

Pour avoir un état de la santé d'apache, j'utilise 2 outils qui sont complémentaires:
  • apachetop
  • mod_status
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.

Aucun commentaire:

Enregistrer un commentaire