bombardier
v1.2.6
庞巴迪是一个 HTTP(S) 基准测试工具。它是用 Go 编程语言编写的,并使用优秀的 fasthttp 而不是 Go 的默认 http 库,因为它具有闪电般的快速性能。
对于bombardier v1.1
及更高版本,如果您需要测试 HTTP/2.x 服务或想要使用更符合 RFC 的 HTTP 客户端,您现在可以使用net/http
客户端。
在 go1.18 及更高版本上测试。
您可以在发布部分获取二进制文件。或者,要获得最新和最好的运行:
Go 1.18+: go install github.com/codesenberg/bombardier@latest
bombardier [<flags>] <url>
有关标志的更多详细信息,请参阅 GoDoc。
AFAIK,不可能使用fasthttp
正确传递 Host 标头,您可以使用net/http
( --http1
/ --http2
标志)来解决此问题。
针对此服务器运行bombardier
的示例:
> 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
或者,针对真实世界的服务器(具有延迟分布):
> 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