bombardier
bombardier 是一个 HTTP(S) 基准测试工具。它使用 Go 编程语言编写,并使用出色的 fasthttp 库代替 Go 的默认 http 库,因为它具有极快的性能。
从 bombardier v1.1
开始,如果需要测试 HTTP/2.x 服务或想使用更符合 RFC 标准的 HTTP 客户端,现在可以使用 net/http
客户端。
已在 go1.18 及更高版本上进行测试。
安装
你可以在 releases 部分获取二进制文件。 或者,要获取最新版本,请运行:
Go 1.18+: go install github.com/codesenberg/bombardier@latest
使用方法
bombardier [<标志>] <url>
有关标志的更详细信息,请参阅 GoDoc。
已知问题
据我所知,使用 fasthttp
无法正确传递 Host 头,你可以使用 net/http
(--http1
/--http2
标志)来解决这个问题。
示例
对 此服务器 运行 bombardier
的示例:
> bombardier -c 125 -n 10000000 http://localhost:8080
使用 125 个连接对 http://localhost:8080 进行 10000000 个请求的轰炸
10000000 / 10000000 [============================================] 100.00% 37s 完成!
统计 平均 标准差 最大
请求/秒 264560.00 10733.06 268434
延迟 471.00us 522.34us 51.00ms
HTTP 状态码:
1xx - 0, 2xx - 10000000, 3xx - 0, 4xx - 0, 5xx - 0
其他 - 0
吞吐量: 292.92MB/s
或者,对真实世界的服务器进行测试(包含延迟分布):
> bombardier -c 200 -d 10s -l http://ya.ru
使用 200 个连接对 http://ya.ru 进行 10 秒的轰炸
[=========================================================================] 10s 完成!
统计 平均 标准差 最大
请求/秒 6607.00 524.56 7109
延迟 29.86ms 5.36ms 305.02ms
延迟分布
50% 28.00ms
75% 32.00ms
90% 34.00ms
99% 48.00ms
HTTP 状态码:
1xx - 0, 2xx - 0, 3xx - 66561, 4xx - 0, 5xx - 0
其他 - 5
错误:
连接到给定的 TCP 地址超时 - 5
吞吐量: 3.06MB/s