使用loadtest压测Node.js:如何设置每秒请求数及解决异常?
你遇到的这个问题在使用loadtest压测时挺常见的——设置了--rps(每秒请求数)参数后没达到预期的请求量,反而只发了1个请求,但去掉该参数后压测就正常。这通常和并发连接数配置、工具版本或者目标接口的响应特性有关,下面是几个针对性的解决方案:
检查并升级loadtest版本
旧版本的loadtest可能存在--rps参数的兼容性bug,先看看你当前的版本:loadtest -V如果版本偏旧,执行升级命令更新到最新版:
npm install -g loadtest新版本对参数的解析和执行逻辑更稳定,大概率能解决参数不生效的问题。
搭配并发连接数(-c参数)使用
默认情况下loadtest的并发连接数是1,这意味着哪怕你设置了--rps 10,单连接受限于接口响应速度,每秒最多只能发送1个请求。你需要同时设置足够的并发连接数来匹配目标RPS,比如:loadtest -t 300 -c 10 --rps 10 [url]这里
-c 10代表开启10个并发连接,每个连接每秒发送1个请求,就能稳定达到每秒10个请求的目标。如果接口响应偏慢,可能需要适当调高并发数来保证RPS达标。启用verbose模式排查细节
添加-v参数查看详细的压测日志,能帮你直观看到请求发送的异常点:loadtest -t 300 --rps 10 -v [url]日志里会显示每个请求的发送状态、响应耗时、工具内部的限流逻辑等信息,你可以从中确认
--rps参数是否被正确识别,或者有没有请求被阻塞的情况。验证目标接口的响应速度
如果你的Node.js接口响应时间超过1秒,单连接下每秒只能处理1个请求,这时候就算设置了--rps 10也无法达到预期。你可以先用curl简单测试接口的响应时间:curl -w "%{time_total}\n" [url]如果响应时间过长,要么先优化接口性能,要么进一步增加并发连接数来弥补单连接的处理瓶颈。
内容的提问来源于stack exchange,提问作者Tomek

