You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

K6固定100 VU场景配置疑问:为何无法达到目标RPS?

K6场景配置无法达到目标RPS的问题排查

我在性能测试中使用K6 scenarios编写了如下配置,期望在保持100个虚拟用户(VU)不变的前提下,生成不同每秒请求数(RPS)的流量。

配置代码:

export let options = {
    scenarios: {
        foo: {
            executor: 'ramping-arrival-rate',
            preAllocatedVUs: 100, //start & end at 100 VUs

            startRate: baseRPS, timeUnit: '1s',
            stages: [
                { target: baseRPS * 10, duration: '0s' },   // jump to 10 iterations/s immediately
                { target: baseRPS * 10, duration: '30s' },  // stay at 10 iterations/s for the next 30 seconds
                { target: baseRPS * 20, duration: '0s' },   // jump to 20 iterations/s immediately
                { target: baseRPS * 20, duration: '30s' },  // stay at 20 iterations/s for the next 30 seconds
                { target: baseRPS * 30, duration: '0s' },   // jump to 30 iterations/s immediately
                { target: baseRPS * 30, duration: '30s' },  // stay at 30 iterations/s for the next 30 seconds
            ],
        },
    },
    insecureSkipTLSVerify: true,
};

执行时K6虽按阶段运行,但结果显示平均仅生成约7 RPS,远低于目标值;同时,接收K6测试结果的Grafana面板显示RPS全程无明显大幅变化。请问是配置存在错误,还是100个VU不足以支撑目标RPS?


问题分析与解决建议

核心原因判断

当前RPS上不去,大概率是单个迭代的执行时间过长,导致100个VU的处理能力跟不上目标RPS的需求,而非单纯的配置语法错误。

比如假设每个迭代(包含请求、响应处理等逻辑)平均耗时14秒,那么100个VU最多能支撑的RPS是 100 / 14 ≈7,刚好和你观测到的结果匹配。

配置中的潜在问题

  1. ramping-arrival-rate的VU逻辑误解:
    你设置了preAllocatedVUs:100,但这个参数只是预初始化100个VU,ramping-arrival-rate executor默认会根据迭代需求动态调整VU数量(上限是maxVUs,你没设置的话默认等于preAllocatedVUs)。但如果迭代耗时太长,就算有100个VU,也无法完成目标速率的迭代。

  2. 瞬间跳变的阶段配置:
    用duration: '0s'瞬间切换目标RPS,会导致K6在极短时间内分配所有VU去处理迭代,后续更高RPS阶段没有多余VU可用,反而无法达到目标速率。

解决步骤

  1. 排查迭代耗时:
    查看K6输出的iteration_duration指标,确认单个迭代的平均执行时长。如果耗时过长,先优化测试脚本(比如移除不必要的逻辑)或被测系统的响应速度。

  2. 计算所需VU数量:
    理论所需VU数量公式:目标RPS × 平均迭代时长(秒)。比如目标30 RPS,每个迭代耗时1秒,需要30个VU;如果每个迭代耗时5秒,则需要150个VU。据此判断100个VU是否足够。

  3. 调整配置参数:

    • 添加maxVUs:如果机器性能允许,设置一个比preAllocatedVUs更高的值(比如200),让K6可以根据需求扩容VU。
    • 修改阶段过渡时长:把duration: '0s'改成duration: '1s',给K6留足时间调整VU分配,避免瞬间压满资源。
    • 确认baseRPS变量值:检查该变量是否正确定义,比如如果baseRPS=1,目标RPS是10/20/30;如果baseRPS值过小,目标RPS自然达不到预期。

内容的提问来源于stack exchange,提问作者Fylix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 00:33:34