Nodejs 压力测试 loadtest


Nodejs 压力测试 loadtest

https://www.npmjs.com/package/loadtest

压力测试指标

1
2
3
4
5
1. 每秒处理事务(TPS):每秒系统处理事务(通过、失败以及停止)的数量。通过它可以确定系统在任何给定时刻的时间事务负载。
2. 平均响应时间:每一事务执行所用的平均时间,通过它可以分析测试场景运行期间应用系统的性能走向。
3. 最大响应时间:指用户发出请求或者指令到系统做出反应(响应)的最大时间。
4. 最少响应时间:指用户发出请求或者指令到系统做出反应(响应)的最少时间。
5. 90%响应时间: 是指所有用户的响应时间进行排序,第90%的响应时间。

压力测试工具

1
2
3
4
1. jmeter
2. ab
3. autocannon
4. loadtest

loadtest

对所选的HTTP或WebSockets URL运行负载测试,该API允许轻松集成到您自己的测试中。支持控制台直接运行和编写测试脚本方式。

  • 安装
1
npm install -g loadtest
  • 使用
1
loadtest <url> -c 10 --rps 10

10个客户端,每秒总共发送10个请求。这里如果客户端数量启动的过少,可能会导致没有足够的客户端来发送所有的请求,请适当对 -c 调整

1
loadtest http://localhost:7357/ -t 20 -c 10 --rps

测试每秒能接收的请求数量 rps,逐步提升 rps
20个客户端,在20秒内进行并发发送,并且逐步提升每个客户端每秒发送的请求数量

返回结果

1
2
3
4
5
6
7
8
9
10
11
12
{
totalRequests: 49, // 总共发送的请求数量
totalErrors: 0,// 总共错误的请求数量 statusCode 不为200的请求
totalTimeSeconds: 5.0027911000000005, // 测试总时间
rps: 10, // 每秒发送的请求数量
meanLatencyMs: 317, // 平均请求消耗时间
maxLatencyMs: 610,// 最大请求消耗时间
minLatencyMs: 146,// 最小请求消耗时间
percentiles: { '50': 300, '90': 474, '95': 550, '99': 610 }, // 请求消耗时间分布
errorCodes: {},// 错误代码
instanceIndex: 0
}

实战

1
loadtest -t 20 -c 10 --rps 10 http://192.168.1.128:6010/playerLogin.action -T 'application/x-www-form-urlencoded' -m POST --data '{\"mCommand\":\"playerLogin\",\"mTimestamp\":\"1348\",\"mChannelId\":\"default\",\"mData\":{\"mLoginId\":\"zh001\",\"mPlayerId\":\"bb9e0984-8d1e-4709-ba7a-aabc2aff7290\"},\"mDeviceId\":\"54acebe9bde8fe26252962b699a1aa81a90be34b\",\"mPlayerId\":\"bb9e0984-8d1e-4709-ba7a-aabc2aff7290\",\"mAreaId\":\"1\",\"mVersion\":\"1.0.13\"}'