gpt4 book ai didi

javascript - k6 中的 sleep 功能是暂停所有虚拟用户的执行还是一次只暂停一个用户?

转载 作者:行者123 更新时间:2023-12-05 02:55:40 24 4
gpt4 key购买 nike

我刚开始使用 https://k6.io用于负载测试,并且想知道 sleep 函数的行为。

现在我已经构建了一个包含多个阶段的负载测试。在我的默认函数中,我有许多请求(get 和 post)被执行。

我注意到,如果我只是按顺序执行这些命令几分钟,我在 elastic 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 函数的并行执行,所以整个函数是为所有用户暂停还是对每个用户执行此操作基础。

在文档中找不到任何关于此的信息,因此将不胜感激!

谢谢

最佳答案

Does sleep cause k6 to pause ALL requests for all virtual users for that amount of time OR does it just pause the requests from one virtual user at a time.

您的直觉是正确的:由于 VU 并行执行 default 函数且彼此隔离,因此 sleep() 调用将仅暂停该 VU 的执行。

由于您在迭代之间随机休眠 1-4 秒,您的服务器可能能够处理随机流量,而发送请求的速度与您的测试机器可以分派(dispatch)的速度一样快,这将导致速度变慢和 500 错误.在测试过程中,您会发现适合您系统的平衡是什么,以及什么最适合您。

正是出于这个原因,这种 sleep() 技术很有用,因此您可以控制发送的请求数量。另请查看 --rps option .

关于javascript - k6 中的 sleep 功能是暂停所有虚拟用户的执行还是一次只暂停一个用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61117231/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com