k6 如何以指定的 RPS/QPS/TPS 执行测试
默认配置下,k6 以固定 VU 的方式执行测试。 说人话,以固定用户数,每秒钟循环访问测试页面,测出网站能承载的最大 QPS。
这种方式比较适合网站做压测。 针对后端系统,我们更需要的是固定 QPS。 例如我们需要保证系统每秒钟 10K QPS 下,保证 99.999% 的请求在 10ms 以内完成。
为此,我们需要手动指定 k6 的 executor 为 constant-arrival-rate。
export const options = {
scenarios: {
constant_request_rate: {
executor: 'constant-arrival-rate',
rate: 1,
timeUnit: '1s',
duration: '1m',
preAllocatedVUs: 20,
maxVUs: 100,
},
},
};
稍微解释一下这里的各个配置项的作用:
配置 | 类型 | 描述 | 默认值 |
---|---|---|---|
duration(必填) | string | 测试时长 | |
rate | integer | 每单位时间( | |
preAllocatedVUs | integer | 预申请的VU数,也可以理解为初始用户数 | |
timeUnit | string | 单位时间,例如 1s、30s、1m 等 | "1s" |
maxVUs | integer | 最大VU数 |
constant-arrival-rate
executor 做了个很有意思(但是不知道有没有用的)抽象。把常见的每秒钟请求数抽象成了每单位时间请求数。
如果你配置 timeUnit="30s",rate=200,那么 k6 会以固定的每30秒发送200个请求的方式执行。
参考引用
How to generate a constant request rate in k6 with the new scenarios API?