【发布时间】:2020-04-09 08:44:57
【问题描述】:
我是使用https://k6.io 进行负载测试的新手,我想知道sleep 函数的行为。
现在我已经构建了一个包含多个阶段的负载测试。在我的默认函数中,我有许多被执行的请求(get 和 post)。
我注意到,如果我只是按顺序执行几分钟,我在弹性 beanstalk 上运行的应用程序开始变慢并最终抛出 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 函数的并行执行,因此整个函数会为所有用户暂停,还是针对每个用户执行此操作。
在文档中找不到有关此的任何信息,因此任何指针将不胜感激!
谢谢
【问题讨论】:
标签: javascript load-testing k6