一个为现代API设计的Go语言HTTP压力测试工具,支持动态模板、自适应超时和高效并发处理.
-force-exit参数解决高并发测试退出缓慢问题{{.Random}}和{{.Number}}模板git https://cnb.cool/Qicloud_W/httpload.git
cd httpload
go build -o httpload
./httpload -u <URL> [选项]
| 选项 | 默认值 | 描述 |
|---|---|---|
-u | (必填) | 测试目标URL |
-c | 100 | 并发worker数量 |
-t | 30s | 测试持续时间 |
-v | false | 启用实时统计 |
-i | false | 随机X-Forwarded-For请求头 |
| 选项 | 默认值 | 描述 |
|---|---|---|
-force-exit | 5s | 强制退出超时时间 |
-qps | 0 | QPS限制(0=无限制) |
-dns-cache | false | 启用DNS缓存 |
-keepalive | true | 启用HTTP keep-alive |
-min-timeout | 1s | 最小请求超时时间 |
-max-timeout | 30s | 最大请求超时时间 |
-o | - | JSON结果输出文件 |
./httpload -u "https://api.example.com" -c 5000 -t 1m -v -force-exit 3s
./httpload -u "https://api.example.com/users/{{.Number}}" \
-m POST \
-d '{"name": "user-{{.Random}}"}' \
-content-type "application/json" \
-c 1000 \
-t 2m
./httpload -u "https://api.example.com/search?q={{.Random}}" \
-qps 2000 \
-dns-cache \
-o results.json
[实时] 运行: 58s, 请求: 185069 (3188.0/s), 成功: 134762 (72.8%), 失败: 50307, 重试: 0 === 测试结果 === 持续时间: 60.32秒 总请求数: 192,405 成功: 178,892 (93.0%) 失败: 13,513 (7.0%) 重试次数: 3,285 QPS: 3,188.5 req/s 平均延迟: 45.2ms P50延迟: 32.5ms P90延迟: 78.4ms P95延迟: 132.7ms P99延迟: 298.1ms 状态码分布: 200: 170,892 (88.8%) 404: 8,642 (4.5%) 500: 2,871 (1.5%) ================
新版本通过以下方式解决5000+并发测试的退出缓慢问题:
-force-exit参数确保测试结束后及时释放资源-force-exit参数可以避免测试结束后的长时间等待欢迎提交Pull Request:
git checkout -b feat/new-feature)git commit -am 'Add new feature')git push origin feat/new-feature)