常用压测命令
一、siege
1. 下载与安装
1 | # Ubuntu/Debian |
2. 核心参数
| 参数 | 说明 | 示例 |
|---|---|---|
-c <并发数> |
并发用户数(必须参数) | -c 100 |
-t <时间> |
压测持续时间(s/m/h) | -t 30s |
-r <次数> |
每个用户重复请求次数 | -r 50 |
-f <文件> |
从文件读取多个URL进行压测 | -f urls.txt |
-i |
随机发送文件中的URL请求 | -i -f urls.txt |
-b |
无延迟模式(最大压力测试) | -b |
-v |
显示详细请求日志 | -v |
3. 示例命令
1 | # 100并发用户,持续30秒压测 |
4. 测试结果解读
1 | Transactions: 2000 hits # 总请求数 |
二、ab(ApacheBench)
1. 下载与安装
1 | # Ubuntu/Debian |
2. 核心参数
| 参数 | 说明 | 示例 |
|---|---|---|
-n <总数> |
总请求数(必须参数) | -n 1000 |
-c <并发数> |
并发用户数(必须参数) | -c 100 |
-k |
启用HTTP Keep-Alive长连接 | -k |
-H <头部> |
添加自定义HTTP头部 | -H "Content-Type: application/json" |
-p <文件> |
POST请求时发送的数据文件 | -p data.json |
-T <类型> |
POST/PUT内容类型 | -T application/json |
3. 示例命令
1 | # 总请求1000次,并发100用户,启用Keep-Alive |
4. 测试结果解读
1 | Concurrency Level: 100 # 并发数 |
三、wrk
1. 下载与安装
1 | # 源码编译(需提前安装Git和GCC) |
2. 核心参数
| 参数 | 说明 | 示例 |
|---|---|---|
-t <线程数> |
工作线程数(建议与CPU核心一致) | -t 4 |
-c <并发数> |
并发连接数(必须参数) | -c 100 |
-d <时间> |
压测持续时间(s/m/h) | -d 30s |
-s <脚本> |
使用Lua脚本定制请求(如POST) | -s post.lua |
--latency |
输出详细延迟分布统计 | --latency |
--timeout <时间> |
设置请求超时时间 | --timeout 10s |
3. 示例命令
1 | # 4线程、100并发、持续30秒压测 |
Lua脚本示例(post.lua):
1 | wrk.method = "POST" |
4. 测试结果解读
1 | Running 30s test @ http://example.com |
四、工具横向对比
| 维度 | siege | ab | wrk |
|---|---|---|---|
| 安装复杂度 | ⭐⭐(包管理器直装) | ⭐⭐⭐(ApacheUtils集成) | ⭐⭐(需编译或Homebrew) |
| 性能上限 | ⭐⭐(万级QPS) | ⭐⭐⭐(十万级QPS) | ⭐⭐⭐⭐(百万级QPS) |
| 灵活性 | ⭐⭐(支持URL列表、随机请求) | ⭐(仅支持简单静态请求) | ⭐⭐⭐⭐(Lua脚本扩展动态场景) |
| 结果可读性 | ⭐⭐⭐(清晰的成功率/响应时间) | ⭐⭐(QPS和延迟分布) | ⭐⭐⭐(线程级统计+延迟分布) |
| 适用场景 | 页面级压测、成功率监控 | 快速基准测试、简单接口验证 | 高并发测试、复杂业务逻辑模拟 |
| 资源消耗 | 高(进程模型) | 中(单线程+多进程) | 低(多线程+事件驱动) |
五、最终建议
- 简单快速测试:用
ab,一条命令即可获取QPS和延迟分布。 - 高并发/复杂场景:选
wrk,支持Lua脚本模拟动态请求(如登录、鉴权)。 - 成功率验证:用
siege,明确展示事务成功率和响应时间极值。 - 生产级压测:结合多工具结果交叉验证(如先用
ab快速验证,再用wrk压测极限)。
附:各工具官网
