如何无需duration参数实现多VU同时发送请求?
实现k6瞬间并发指定数量请求的方案
你可以通过结合k6/execution模块控制测试终止,让所有VU在启动后立即执行请求,完成后直接结束测试,就能实现同一时刻发送指定数量的请求,不需要依赖duration参数,也不受VU的RPS限制。
基础实现脚本
import http from 'k6/http'; import { test } from 'k6/execution'; export const options = { vus: 5, // 这里设置你需要的并发请求数量 }; export default function () { // 替换为你的实际请求(GET/POST等,可添加参数) http.get('https://your-target-api.com/endpoint'); // 每个VU完成请求后触发测试终止,最后一个VU执行时会结束整个测试 test.abort(); }
精准同步版(确保绝对同时触发)
如果需要更严格的同一时刻触发,可以用k6/sync模块的barrier做同步,避免因启动顺序导致的微小时间差:
import http from 'k6/http'; import { barrier } from 'k6/sync'; import { test } from 'k6/execution'; export const options = { vus: 5, }; export default function () { // 等待所有VU都到达这个节点,再一起执行请求 barrier('request-start').wait(); http.get('https://your-target-api.com/endpoint'); test.abort(); }
核心逻辑说明
vus:5直接指定并发的请求数量,每个VU对应一个请求test.abort()会在当前VU完成请求后终止测试,当所有VU都执行完这个方法,测试立即结束,不会持续发送请求- 同步版的
barrier能消除VU启动的微小延迟,确保所有请求在同一毫秒级时间点发出
内容的提问来源于stack exchange,提问作者mrmrmr
相关产品推荐
相关产品推荐

