协作头脑风暴
brainstorming
在实现前澄清需求、探索设计选择,并形成清晰的开发方向。
http-load-tester【开发与工程】HTTP 阶梯式并发压测工具,自动执行多级并发压力测试,采集 p50/p90/p99 延迟百分位数,分析性能拐点(如延迟激增、吞吐饱和或错误率飙升),并输出结构化报告与最优并发建议。使用纯 Python 标准库,零外部依赖。当用户提及 HTTP 压测、基准测试、ab、wrk、并发测试、阶梯压测、延迟百分位、p99、拐点分析、性能测试、QPS、RPS 或容量规划等关键词或场景时触发。
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
对 HTTP 服务执行阶梯式并发压力测试,自动采集延迟百分位数并检测性能拐点。
# 基本用法 — 对目标 URL 执行默认阶梯压测
python3 scripts/http_benchmark.py https://example.com/api/health
# 自定义并发阶梯和每级持续时间
python3 scripts/http_benchmark.py https://example.com/api/health -s 5,20,50,100,300 -d 15
# 指定使用 ab 引擎
python3 scripts/http_benchmark.py https://example.com/ -t ab
# 仅输出 JSON(适合程序化解析)
python3 scripts/http_benchmark.py https://example.com/api/health --json
# 使用 ab 且指定每阶段请求总数
python3 scripts/http_benchmark.py https://example.com/ -t ab -n 5000
# 将 JSON 报告保存到文件
python3 scripts/http_benchmark.py https://example.com/api/health --json > report.json
| 参数 | 短参 | 默认值 | 说明 |
|---|---|---|---|
url | — | (必填) | 目标 URL(http:// 或 https://) |
--steps | -s | 1,10,50,100,200,500 | 并发阶梯(逗号分隔正整数) |
--duration | -d | 10 | 每阶段持续秒数(wrk 直接使用;ab 据此估算请求数) |
--requests | -n | concurrency×100 | 使用 ab 时每阶段总请求数 |
--tool | -t | 自动检测 | 指定压测工具:wrk 或 ab |
--threads | — | min(并发, CPU核数) | wrk 线程数 |
--json | — | false | 仅输出 JSON 格式 |
压测工具: wrk
目标 URL: https://example.com/api/health
并发阶梯: [1, 10, 50, 100, 200, 500]
每阶段持续: 10s
----------------------------------------------------------------------------------
并发 | RPS | Avg(ms) | P50(ms) | P90(ms) | P99(ms) | 错误率 | 拐点
----------------------------------------------------------------------------------
1 | 245.3 | 4.1 | 3.8 | 5.2 | 8.1 | 0.00% |
10 | 2301.5 | 4.3 | 4.0 | 5.8 | 9.3 | 0.00% |
50 | 9876.2 | 5.1 | 4.6 | 7.2 | 12.5 | 0.00% |
100 | 14523.1 | 6.9 | 5.8 | 10.3 | 22.7 | 0.00% |
200 | 15102.3 | 13.2 | 10.1 | 22.5 | 58.3 | 0.12% | ◀
500 | 14890.5 | 33.6 | 28.3 | 55.2 | 132.1 | 1.35% | ◀
----------------------------------------------------------------------------------
拐点分析:
▶ 并发 200:
- p99延迟加速增长: 22.7ms → 58.3ms (增幅 35.6ms,前一步增幅 10.2ms)
- 吞吐量趋于饱和但延迟激增: RPS仅增长3.9% 而 p99延迟增长156.8%
▶ 并发 500:
- 错误率飙升: 0.12% → 1.35%
建议最优并发数: 100
--json){
"url": "https://example.com/api/health",
"tool": "wrk",
"duration_per_step": 10,
"steps": [
{
"concurrency": 1,
"rps": 245.3,
"avg_latency_ms": 4.1,
"p50_ms": 3.8,
"p90_ms": 5.2,
"p99_ms": 8.1,
"total_requests": 2453,
"errors": 0
}
],
"inflection_points": [
{
"concurrency": 200,
"step_index": 4,
"reasons": ["p99延迟加速增长: ..."]
}
],
"recommended_concurrency": 100
}
需要安装 wrk 或 ab 中的至少一个:
# Ubuntu / Debian
sudo apt-get install wrk # 推荐
sudo apt-get install apache2-utils # ab
# macOS
brew install wrk
# ab 已随 macOS 预装
对每一级并发,与前两级对比计算以下指标:
建议最优并发:第一个拐点前一级的并发数;若无拐点,选 RPS 最高的级别。