简介
autocannon
是一个基于 Node.js 开发的命令行工具,用于压力测试 HTTP 和 WebSocket 协议的服务器,可用于评估网站、Web 应用程序和 API 的性能。
本文将详细介绍 autocannon
的使用方法,包括安装、配置、使用、输出结果以及解读结果等方面。
安装
使用 npm
命令进行全局安装:
npm install -g autocannon
配置
autocannon
支持多种配置参数,以下是一些常用的配置参数:
-c, --connections
:并发连接数,默认为 10。-a, --amount
:总请求次数,默认为 0(表示无限制)。-p, --pipelining
:每个连接的 HTTP/1.1 管道线请求数量,默认为 1。-m, --maxConnectionRequests
:每个连接的最大请求数量,默认为 0(表示无限制)。-d, --duration
:测试运行的持续时间,单位为秒,默认为 10。-t, --timeout
:每个请求的超时时间,单位为毫秒,默认为 5000。-i, --input
:用于 POST 请求的输入文件路径。-H, --header
:HTTP 头部信息,格式为 key:value。-b, --body
: 请求体,用于 POST 请求的数据。
完整的配置列表可以通过 autocannon --help
命令获取。
使用
使用 autocannon
进行压力测试非常简单,以下是一些常用的命令示例:
- 发送 GET 请求,并建立 100 个并发连接,持续时间为 10 秒:
autocannon http://localhost:3000 -c 100 -d 10
- 发送 POST 请求,并指定请求体,建立 10 个并发连接,共发起 100 次请求:
autocannon http://localhost:3000/api -c 10 -a 100 -b '{"name": "John", "age": 20}'
- 发送 WebSocket 请求,创建 1 个连接,发送 5 个消息,持续时间为 5 秒:
autocannon ws://localhost:3000/ws -c 1 -p 1 -m 5 -d 5
输出结果
autocannon
在测试结束后会输出测试结果,包括以下数据:
- 请求总数、成功数、失败数和错误数。
- 平均每秒处理请求数、每秒字节数以及延迟时间。
- 最大、最小和平均响应时间、吞吐量以及 HTTP 状态码分布。
以下是一个输出结果示例:
-- -------------------- ---- ------- ------- --- ---- - --------------------- -- ----------- ---- ------- ---------- ------ --------------------------------------------------------------------------- - ---- - ---- - --- - ----- - --- - ----- - --- - --- - --------------------------------------------------------------------------- - ------- - - -- - - -- - -- -- - --- -- - ---- -- - - -- - -- -- - --------------------------------------------------------------------------- - ------- - - - --- - --- - --- - ----- - --- - --- - -------------------------------------------------------------------------- - ----------------------------------------------------------- -------- ----------------------------------------------------------------------------------