Ab
Aller à la navigation
Aller à la recherche
| Fiche express | |
|---|---|
| Type | Outil de benchmark HTTP |
| Commande | ab
|
| Paquet (Debian/Ubuntu) | apache2-utils
|
| Paquet (RHEL/CentOS) | httpd-tools
|
| Voir aussi | Apache · Apachetop · Get server status |
ab (ApacheBench) est un outil en ligne de commande fourni avec Apache HTTP Server pour mesurer les performances d'un serveur web : nombre de requêtes par seconde qu'il peut tenir, temps de réponse, taux d'échec. Il fonctionne quel que soit le serveur web ciblé (Apache, Nginx, etc.), pas seulement Apache.
Installation
- Debian/Ubuntu :
apt install apache2-utils
- RHEL/CentOS :
yum install httpd-tools
Utilisation
Syntaxe de base : nombre total de requêtes (-n) et niveau de concurrence
(-c).
ab -n 10000 -c 30 http://serveur-test.example.com/page-test.php
Test avec connexions persistantes (keep-alive) :
ab -k -c 1000 -n 100000 "http://exemple.example.com/"
Test avec un en-tête personnalisé, ici pour vérifier que la compression gzip fonctionne :
ab -n 1000 -c 30 -H "Accept-Encoding: gzip" http://serveur-test.example.com/page-test.php
Points de vigilance :
- ab fait le test depuis une seule machine et un seul thread : au-delà de quelques
milliers de requêtes concurrentes, c'est souvent le client qui devient le goulot d'étranglement, pas le serveur testé. Pour de la charge plus lourde, préférer un outil qui distribue la charge sur plusieurs workers.
- À exécuter uniquement sur une infrastructure qu'on est autorisé à tester : un benchmark
agressif peut se comporter comme un déni de service.
Alternatives
- siege — benchmark HTTP multi-URL, permet de rejouer un fichier d'URLs
(https://www.joedog.org/siege-home/).
- wrk et hey — outils plus récents, multi-thread, souvent plus représentatifs
pour des tests de charge élevée (à vérifier selon la distribution, pas toujours packagés).
Voir aussi
- Apache — serveur web habituellement ciblé par les tests
- Apachetop — observer les connexions en temps réel pendant un test de charge
- Get server status — suivre la charge côté serveur (mod_status) pendant le benchmark