IMLC.ME
/k6/k6 Ramping Up VUs 流量爬升/

k6 Ramping Up VUs 流量爬升

ramping up 是性能测试必不可少的需求之一。

一是虚拟机语言(例如 Java)需要启动和热身时间,特别是运行时优化,需要一段时间的运行才能达到最优状态。

二是整个系统也需要时间热身,例如热点数据缓存,触发自动扩容到稳定状态等。

短时间内直接压上100%的流量非但性能不理想,还可能导致整个系统奔溃。测了个寂寞。

k6 提供了 stages 参数实现 ramping up。

docker run -i loadimpact/k6 run - << 'EOF'
import http from 'k6/http';

export const options = {
  stages: [
    { duration: '5m', target: 4 },
    { duration: '10m', target: 10 },
  ],
};

export default function () {
  http.get('https://test.k6.io');
}
EOF

上方代码定义了两个阶段(stage), 第一个阶段以 4VUs 跑5分钟,第二阶段以 10VUs 跑10分钟。 显然第一阶段就是我们的热身阶段。

注意,VU 的爬升也是平滑上升的。k6 开始后,从 1VUs 缓慢爬升到 4VUs,5分钟后又从 4VUs 爬升到 10。中间经过了5、6、7、8、9 VUs,而不是直接跳跃到目标 VUs。

根据 k6 官方文档 ,我们还可以定义 executors 的方式做到流量爬升。 但是定义更麻烦一点。