求支持HTTP 3xx重定向的Go应用负载测试工具(类Apache Bench)
适合支持HTTP 3xx重定向的负载测试工具推荐
我刚好有几个适合的工具推荐给你,都是类似Apache Bench(ab)的轻量/易用负载测试工具,而且都支持跟随3xx重定向,刚好匹配你的Go主从应用场景:
1. wrk(高性能基准测试工具)
wrk是一款性能出色的HTTP基准测试工具,虽然默认不自动跟随重定向,但可以通过Lua脚本轻松实现3xx跳转的处理,完全支持307这类临时重定向:
首先创建一个Lua脚本文件(比如follow_redirects.lua):
function response(status, headers, body) -- 检测3xx重定向状态码 if status >= 300 and status < 400 then local location = headers["Location"] if location then -- 更新Host头(如果重定向到不同域名) wrk.headers["Host"] = location:match("//([^/]+)") or wrk.headers["Host"] -- 返回新的请求格式,自动跳转 return wrk.format(nil, location) end end end
然后运行负载测试:
wrk -s follow_redirects.lua -c 100 -t 4 -d 30s http://your-app-base-url
参数说明:-c是并发连接数,-t是线程数,-d是测试持续时间,-s指定使用的Lua脚本。
2. vegeta(Go语言原生负载测试工具)
vegeta是用Go编写的负载测试工具,和你的应用同技术栈,适配性极佳,而且原生支持跟随重定向,不需要额外编写脚本:
运行示例命令:
echo "GET http://your-app-base-url" | vegeta attack -redirects=3 -duration=30s -rate=100/s | vegeta report
参数说明:-redirects=3设置最多跟随3次重定向(可按需调整),-duration是测试时长,-rate是每秒请求数。它的输出会包含详细的延迟分布、错误率、吞吐量等指标,非常适合主从架构的负载验证。
3. hey(轻量ab替代工具)
hey同样是Go语言实现的轻量负载测试工具,语法和ab几乎一致,上手成本极低,并且支持和curl一样的-L参数来跟随重定向:
运行示例命令:
hey -n 1000 -c 100 -L http://your-app-base-url
参数说明:-n是总请求数,-c是并发数,-L开启自动跟随3xx重定向,完全满足你对ab替代工具的需求。
内容的提问来源于stack exchange,提问作者nguyennd
相关产品推荐
相关产品推荐

