有没有办法在locust中实现用户同步?

Posted

技术标签:

【中文标题】有没有办法在locust中实现用户同步?【英文标题】:Is there a way to achieve user synchronization in locust? 【发布时间】:2018-05-25 09:35:09 【问题描述】:

我将使用 Locust 测试几个 python api。后端使用 Google appengine 并使用自动缩放。因此,确定资源利用率并不是我的首要任务。我的目标只是测试更多并发请求的 api 响应时间并确定任何线程问题。

我需要为 100 万用户运行测试。我将运行分布式测试,我将遵循楼梯输入斜升模式 增长到 10 万用户并在 30 分钟内保持 10 万用户的稳定负载,然后再移动到 20 万并发用户等等,如下所示:

所以我想确保我在任何给定时间每秒准确地发出 X 个请求。我的理解是,使用 Locust,我们只能控制用户总数和孵化率。

那么,如果我想以每秒发送 X 个请求的方式同步请求,有没有办法实现呢?

我已经浏览了Locust documentation 和some threads,但我还没有找到任何可以令人满意地回答我的问题的东西。我不想仅仅依靠知道有 X 个用户发送请求,我想确保以指定的每秒请求率正确测试并发级别。

我希望我的问题足够详细,并且不会遗漏任何重要信息。

【问题讨论】:

不可能 好的,感谢您的确认,Corey。如果您碰巧有任何其他建议可以满足我的上述要求,请告诉我。感谢您的回复! 好吧..实际上它可能的..它只是没有在Locust中实现:) 但是一般来说,如果不控制RPS,测试结果怎么能具体呢?意思是,否则使用低配置 VM 作为负载生成器会产生低 RPS,而不是更好的配置 VM。与高 RPS 相比,低 RPS 会导致不同的响应时间。 您可以通过调整孵化的用户数量来间接控制 RPS。您只是不能将 RPS 直接设置为固定速度。 【参考方案1】:

尝试使用constant_pacing

https://docs.locust.io/en/stable/api.html#locust.wait_time.constant_pacing

返回一个函数,该函数将跟踪任务的运行时间,每次调用它都会返回一个等待时间,该等待时间将尝试使任务执行之间的总时间等于 wait_time 参数指定的时间。

根据目标响应时间为constant_pacing的输入尝试足够大的值。

通过此功能以及模拟用户总数,您可以实现恒定数量的rps。

对于更高级和有形的流量,请尝试tick 函数。

https://docs.locust.io/en/stable/generating-custom-load-shape.html

【讨论】:

以上是关于有没有办法在locust中实现用户同步?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 xpath 表达式中实现具有名称的用户定义函数?

locust接口压测

[delphi 数据库同步]DELPHI中实现数据库的恢复与同步

如何在 Firebase 中实现基于角色的访问控制

Locust学习总结分享

如何在 Flutter 的消息中实现用户提及?