Ab

De wiki.nexiat.fr
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