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

K6测试中iterations与vus含义、配置规则及场景参数设置疑问

K6 vus与iterations参数常见问题解答

1. 两个参数的明确定义

  • vus:虚拟用户数,即同时并发执行测试脚本的独立用户数量,每个VU会独立循环执行default函数中的逻辑,直到测试终止条件被触发,你之前的理解是正确的。
  • iterations:全局总迭代次数,指整个测试生命周期内,所有VU总共需要执行default函数的次数,注意这是所有VU共享的总次数,不是单个VU的执行次数。

2. 你当前的配置是否正确?是否需要保留iterations?

你的测试目标是100个用户持续访问5分钟,当前配置是错误的。
K6中如果同时配置了duration和iterations,会遵循“先触发先终止”的规则:要么跑满指定时长,要么跑完指定总迭代数,哪个先满足测试就立刻停止。你当前配置iterations:20,总迭代数只有20次,远小于100个VU的数量,测试启动后20个VU各执行1次请求就会结束,全程只有几秒,完全达不到跑满5分钟的目标。
你的场景不需要配置iterations,仅保留vus:100和duration:'300s'即可满足需求,正确配置如下:

import http from 'k6/http';
     
export let options = {
  vus: 100,
  duration: '300s'
};

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

iterations参数仅用于固定总执行次数的场景,比如你需要验证“总共跑1万次接口请求的性能表现,不管耗时多久”,这类场景才需要配置iterations,通常和duration二选一使用即可。

3. 不同iterations配置的效果差异

首先解释为什么iterations不建议小于vus:当总迭代数小于VU数量时,必然有部分VU没有机会被调度执行任何请求,你设置的并发数完全无法生效,既浪费资源,测试结果也没有参考价值。
不同配置的具体效果:

  • iterations:20:总迭代只有20次,仅20个VU各执行1次请求,剩下80个VU全程闲置,测试瞬间结束,完全达不到100并发持续压测5分钟的目标。
  • iterations:100:总迭代100次,刚好每个VU各执行1次请求,执行完测试就终止,依然只能跑几秒,和持续压测的需求不符。
  • iterations:1000:总迭代1000次,平均每个VU执行10次,假设单接口响应耗时100ms,10次请求也仅需1秒多,测试还是会在几秒内结束,跑不满5分钟。
  • 移除iterations配置:测试会完全按照duration规则执行,100个VU会持续循环执行请求,整整跑满300秒,刚好匹配你的测试目标。

内容的提问来源于stack exchange,提问作者Đình Bình

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:45:03