2011-03-22-ean
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.