bombardier est un outil d'analyse comparative HTTP(S). Il est écrit en langage de programmation Go et utilise un excellent fasthttp au lieu de la bibliothèque http par défaut de Go, en raison de ses performances ultra-rapides.
Avec bombardier v1.1
et versions ultérieures, vous pouvez désormais utiliser le client net/http
si vous devez tester les services HTTP/2.x ou si vous souhaitez utiliser un client HTTP plus conforme aux RFC.
Testé sur go1.18 et supérieur.
Vous pouvez récupérer les binaires dans la section des versions. Alternativement, pour obtenir la dernière et la meilleure exécution :
Passez à la version 1.18+ : go install github.com/codesenberg/bombardier@latest
bombardier [<flags>] <url>
Pour des informations plus détaillées sur les indicateurs, consultez GoDoc.
AFAIK, il est impossible de transmettre correctement l'en-tête Host avec fasthttp
, vous pouvez utiliser net/http
( --http1
/ --http2
flags) pour contourner ce problème.
Exemple d'exécution bombardier
sur ce serveur :
> bombardier -c 125 -n 10000000 http://localhost:8080
Bombarding http://localhost:8080 with 10000000 requests using 125 connections
10000000 / 10000000 [============================================] 100.00% 37s Done!
Statistics Avg Stdev Max
Reqs/sec 264560.00 10733.06 268434
Latency 471.00us 522.34us 51.00ms
HTTP codes:
1xx - 0, 2xx - 10000000, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 292.92MB/s
Ou, contre un serveur du monde réel (avec distribution de latence) :
> bombardier -c 200 -d 10s -l http://ya.ru
Bombarding http://ya.ru for 10s using 200 connections
[=========================================================================] 10s Done!
Statistics Avg Stdev Max
Reqs/sec 6607.00 524.56 7109
Latency 29.86ms 5.36ms 305.02ms
Latency Distribution
50% 28.00ms
75% 32.00ms
90% 34.00ms
99% 48.00ms
HTTP codes:
1xx - 0, 2xx - 0, 3xx - 66561, 4xx - 0, 5xx - 0
others - 5
Errors:
dialing to the given TCP address timed out - 5
Throughput: 3.06MB/s