Mesurer les performances de son serveur Web avec ApacheBench

Pour ceux et celles qui l’ignorent, Apache propose un petit outil très pratique pour la mesure de performance et les tests de charges de serveur Http. Son nom : AB (pour ApacheBench).
Pour vérifier qu’AB est installé sur votre serveur, lancez la commande suivante :
ab -h
Si vous rencontrez un message d’erreur, alors AB n’est peut-être pas disponible sur votre machine. La commande suivante suffira à l’installer :
sudo apt-get install apache-utils
L’utilisation de cet outil est on ne peut plus simple. Il y a juste deux arguments à retenir :
- -n : nombre de requêtes à envoyer (GET)
- -c : nombre de requêtes parallèles (optionnel)
Exemple d’utilisation :
ab -n 1000 -c 10 http://monsite.com/index.html
La résultat du benchmark aura la tête suivante :
Benchmarking monsite.com (be patient).....done Server Software: Apache Server Hostname: monsite.com Server Port: 80 Document Path: /index.html Document Length: 116 bytes Concurrency Level: 10 Time taken for tests: 11.350 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Non-2xx responses: 100 Total transferred: 49100 bytes HTML transferred: 11600 bytes Requests per second: 8.81 [#/sec] (mean) Time per request: 1134.975 [ms] (mean) Time per request: 113.498 [ms] (mean, across all concurrent requests) Transfer rate: 4.22 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.7 0 3 Processing: 540 1110 146.0 1121 1450 Waiting: 539 1107 145.2 1119 1449 Total: 540 1110 146.2 1121 1450 Percentage of the requests served within a certain time (ms) 50% 1121 66% 1160 75% 1204 80% 1223 90% 1282 95% 1328 98% 1351 99% 1450 100% 1450 (longest request)
Astuces
Si vous n’êtes pas à l’aise avec les commandes Linux, voici comment envoyer le résultat du benchmark dans un document texte :
ab -c 1000 -n 10 http://monsite.com/index.html > benchmark.txt
Ou mieux, vous pouvez directement envoyer ce résultat par mail :
ab -c 1000 -n 10 http://monsite.com/index.html | mail -s "Benchmark" mail@domain.com