tfe Homepage

22/03/2011

Benchmark de pages web dynamiques avec ab

Mini tutorial sous la forme d'un mémo pour benchmarker une page web dynamique (php ou autre) avec l'outil fourni avec le serveur apache: ab.

Cet outil permets d'envoyer des requêtes en parallèle et mesurer le temps de réponse.

Tout d'abord, si votre page utilise une identification, vous voudrez probablement mesurer les performances de l'utilisateur une fois connecté. Pour cela il faudra passer le cookie d'identification e  ab.

Pour cela, on utilise wget pour récuperer le cookie envoyé:

$ wget --cookies=on --keep-session-cookies --save-cookies=cookie.txt  http://localhost/mon_url.php

Par la suite on regarde la valeur du cookie en regardant le contenu du fichier:

$ cat cookie.txt
# HTTP cookie file.
# Generated by Wget on 2011-03-22 19:58:39.
# Edit at your own risk.

localhost   FALSE   /   FALSE   0   PHPSESSID   aq5fbtj94fshjic8hp04rs8uu0

On peut alors utilise cette association clé/valeur dans ab pour simuler le cookie:

$ ab -c 1 -n 1  -C "PHPSESSID=aq5fbtj94fshjic8hp04rs8uu0" http://localhost/ma_page_Avec_identification.php

Pour vérifier la bonne identification, il est très util d'avoir un http error code correct, e  savoir un 403 si l'utilisateur n'est pas connecte© et un 200 si on a les permissions correctes.

On peut vérifier ce que retourne le serveur e  ab en spécifiant un verbose de 4:

$ ab -v 4 -c 1 -n 1  -C "PHPSESSID=aq5fbtj94fshjic8hp04rs8uu0" http://localhost/ma_page_Avec_identification.php
.... Snip ... 
LOG: Response code = 200

Pour finir, sur certaines pages ayant une "protection" (hum hum...) via le header referer, on peut simuler un referer en modifiant l'enteªte http directement:

 ab -v 4 -c 10 -n 100  -C "PHPSESSID=aq5fbtj94fshjic8hp04rs8uu0" -H "Referer:http://localhost/mapage.php" http://localhost/mapage_avec_Identification.php

On en verra alors 10 requeªtes simultane©es jusqu'e  recevoir traiter un total de 100 requeªtes.