Artillery中如何设置arrivalRate低于1实现低频率请求发送
Artillery 实现低于1次/秒发压频率的方法
arrivalRate 的定义是每秒新启动的虚拟用户数,本身就不支持小于1的赋值,要实现每5秒1次这类低频发压,不需要找非官方的偏门方案,用原生的arrivalCount参数就能实现。
具体实现方式
arrivalCount 用来指定单个压测阶段内总共要启动的虚拟用户总数,Artillery 会自动把这些虚拟用户的启动时间均匀分布在整个阶段的时长里,支持任意低的发压频率。
比如你需要每5秒发1次请求、持续60秒,算下来整个阶段总共要发12次请求,对应配置直接这么写就行:
config: target: "https://example.com/api" phases: - duration: 60 arrivalCount: 12 name: 低频压测(每5秒1请求)
后续要调整频率直接按比例算总请求数改arrivalCount就可以:
- 每10秒1次、持续60秒:设置
arrivalCount: 6 - 每30秒1次、持续5分钟(300秒):设置
arrivalCount: 10
注意点
- 这个是Artillery正式支持的配置项,不是未公开的hack手段。虚拟用户的启动时机由引擎独立调度,就算你测试的接口响应要花好几秒,也不会拖慢发压节奏,到点就会发起新请求,完全符合负载测试的要求。
- 别用在场景脚本里加
sleep的方式凑间隔,这种写法的等待时间会叠加接口本身的响应耗时,实际请求间隔会比你预设的长,压测节奏不准。
内容的提问来源于stack exchange,提问作者Bill O'Haran
相关产品推荐
相关产品推荐

