简介
autocannon 是一款基于 Node.js 的高性能 HTTP 压力测试工具,适用于评估 Web 服务的并发处理能力和性能瓶颈。
一、工具特点
- 高性能:利用 Node.js 异步非阻塞机制模拟高并发请求。
- 实时监控:测试过程中动态展示请求统计和性能指标。
- 轻量易用:通过命令行或脚本快速执行,支持参数化配置。
二、安装方法
全局安装命令:
npm install autocannon -g
三、基础用法
示例命令:
autocannon -c 100 -d 5 http://localhost:3000/
常用参数:
- -c/–connections:并发连接数(默认 10)。
- -d/–duration:测试持续时间(单位:秒)。
- -p/–pipelining:每个连接的流水线请求数(默认 1)。
- -m/–method:请求方法(如 GET、POST)。
- -b/–body:请求体内容(适用于 POST)。
- -H/–header:自定义请求头。
四、结果解读
测试完成后会输出两张表:
延迟统计表(单位:毫秒)
- 2.5%:最快 2.5% 请求的延迟,反映最佳性能。
- 50%(中位数):50% 请求的延迟低于此值,代表典型用户响应时间。
- 97.5%:最慢 2.5% 请求的延迟,用于识别极端延迟问题。
- 99%:99% 请求的延迟上限,评估服务稳定性。
- Avg:平均延迟,受极端值影响较大,需结合其他指标分析。
- Stdev:标准差,反映延迟波动程度,值越大性能越不稳定。
- Max:单次请求的最大延迟,定位偶发性性能瓶颈。
请求量统计表
- Req/Sec(RPS):每秒请求数,衡量系统并发处理能力。
- Byte/Sec(BPS):每秒字节数,吞吐量。
- Min:单次请求的最小字节数。
使用建议
- 延迟优化:若 97.5% 或 Max 延迟过高,需排查服务端资源(CPU/内存)或数据库瓶颈。
- 吞吐量瓶颈:若 Req/Sec 低于预期,可尝试增加 -c(并发连接数)或 -p(流水线请求数)提升性能。
- 数据关联:同步监控服务端指标(如 Node.js 进程 CPU 使用率),避免单工具视角偏差。
五、高级配置
请求内容校验:
- 使用 --expect-body 参数匹配响应内容,避免错误响应被统计为成功6。
- 示例:autocannon --expect-body “hello world” http://localhost:3000/
模拟复杂场景:
- 通过脚本调用 autocannon 模块,自定义请求逻辑(如动态参数、多接口混合)
const autocannon = require('autocannon');
autocannon({
url: 'http://localhost:3000',
method: 'POST',
body: JSON.stringify({ key: '动态值' }),
headers: { 'Content-Type': 'application/json' }
});
六、注意事项
- 结果准确性:默认仅校验状态码,需结合业务逻辑判断响应内容正确性。
- 资源监控:测试时建议同步监控服务端 CPU/内存使用率,避免单工具视角偏差。
- 参数调优:根据目标系统性能逐步增加并发数,避免瞬间过载导致服务崩溃。