如何用k6逐步增加虚拟用户并限制每个用户仅执行一次迭代?
解决k6中虚拟用户逐步增加且每个仅执行一次迭代的问题
原脚本使用ramping-vus执行器无法限制每个虚拟用户仅执行一次迭代,因为该执行器默认会让每个VU持续循环执行迭代逻辑。要实现需求,推荐使用per-vu-iterations执行器,它可以精准控制每个VU的迭代次数,同时支持通过阶段配置逐步增加VU数量。
修改后的脚本
import { sleep } from 'k6'; import http from 'k6/http'; export let options = { scenarios: { single_iter_per_vu: { executor: 'per-vu-iterations', vus: 0, // 初始虚拟用户数为0 stages: [ { duration: '1m', target: 50 }, // 1分钟内逐步将VU数量提升至50 ], iterations: 1, // 每个VU仅执行1次迭代 maxDuration: '2m', // 设置最大运行时长,确保所有VU完成后脚本终止 }, }, }; export default function () { // 这里替换为你的实际业务逻辑,比如发送HTTP请求 // http.get('https://your-api-endpoint.com'); sleep(3); }
关键配置说明
per-vu-iterations执行器:专门用于控制每个虚拟用户执行固定次数的迭代,iterations: 1直接实现了每个VU仅运行一次的要求。stages阶段配置:通过初始vus:0和目标阶段的target:50,实现1分钟内虚拟用户数量逐步增加的效果。maxDuration:设置合理的最大运行时长,避免脚本在所有VU完成迭代后仍持续等待,可根据你的业务逻辑耗时调整。
内容的提问来源于stack exchange,提问作者Sriram Chowdary
相关产品推荐
相关产品推荐

