【发布时间】:2021-12-16 19:08:24
【问题描述】:
我之前询问过this question,关于使用 Locust 作为向目标服务器传递静态、可重复请求负载的方式(每秒 n 个请求,持续五分钟,其中 n 是每秒预先确定的),并确定这不是很容易实现的。
因此,我退后一步,将问题重新表述为您可能可以使用自定义负载形状来解决的问题,但我不确定如何——因此提出了这个问题。
与上一个问题一样,我们提取 Apache 日志的时间为 5 分钟,其中每秒向 Apache 服务器发出 1 到 36 个 GET 请求。从这些日志中,我可以得到特定每秒请求率出现多少次的分布;例如在任何给定秒内处理 36 个请求的概率为 1/4000,在任何给定秒内处理 18 个请求的概率为 1/50,依此类推。
我可以将请求率的分布建模为一个简单的 Python 列表:1 到 36 之间的数字出现在其中的次数与在 Apache 中捕获的 5 分钟时间段内每秒发出 1 到 36 个请求的次数相同日志,然后在自定义负载形状的tick() 方法中随机从中获取一个数字,以获取一个通知(user count, spawn rate) 计算的数字。
此外,通过使用预先确定的随机种子,我可以使测试运行在可接受的变化范围内可重复运行,从而有助于测试我的 API 服务器配置更改,因为每次都应检索相同的随机列表元素。
问题是我还不能“在 Locust 中思考”,从用户数量和生成率而不是服务器接收请求的速率来思考。
问题变成了这样:
您如何实现自定义负载形状的tick() 方法,使(user count, spawn rate) 元组导致每秒发送的请求的大致分布,可能与其他配置选项和插件的帮助?
【问题讨论】:
标签: load-testing locust