有没有办法在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中实现用户同步?的主要内容,如果未能解决你的问题,请参考以下文章