IMLC.ME
/k6/k6 如何以指定的 RPS/QPS/TPS 执行测试/

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测试时长
rateinteger每单位时间(
preAllocatedVUsinteger预申请的VU数,也可以理解为初始用户数
timeUnitstring单位时间,例如 1s、30s、1m 等"1s"
maxVUsinteger最大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?