我刚接触使用 https://k6.io 进行负载测试,想了解 sleep
函数的行为。
目前我已经建立了一个包含多个阶段的负载测试。在默认函数中,我有一些执行的请求(get和post)。
我注意到,如果我只是按顺序执行这些请求几分钟,我的应用程序(运行在弹性豆荚上)就开始变慢,并最终抛出 500 错误。
但是,如果我在每个请求后面添加一个 sleep
语句,如下所示:
const getMe = http.get(`${appEndpoint}/me`, params)
check(getMe, {
'me: status was 200': r => r.status == 200,
'me: response time OK (under 500ms)': r => r.timings.duration < maxResponseTimeMs,
});
sleep(Math.floor(Math.random() * 4) + 1)
// next request would follow below
我可以轻松地将虚拟用户的数量增加10倍而不会出现任何问题。
所以我的问题是:
sleep
是导致k6暂停所有虚拟用户的所有请求还是仅暂停一个虚拟用户的请求。
据我理解,虚拟用户本质上只是运行负载测试的default
函数的并行执行,那么整个函数是否会为所有用户暂停,还是基于每个用户暂停。
在文档中找不到相关信息,请指点!
谢谢