- 有什么方法可以在任务集类中获取当前执行的客户端信息?我们可以在 Jmeter 中获取线程号。这样我们可以在 Locust 工具中获取客户编号吗?
- 假设我正在使用 5 个客户端执行 20 个请求。我可以说每个客户端正在执行 4 个请求(20/5 = 每个请求 4 个)吗?这里使用 5 个客户端执行这 20 个请求的内部机制是什么?
这个问题与问题 2中给出的数据有关,执行是否以迭代方式发生。与第一次迭代一样,客户端 1、2、3、4 和 5 分别执行请求 1、2、3、4 和 5。下一次迭代,客户端 1、2、3、4 和 5 再次分别执行请求 6、7、8、9 和 10。我们如何在 Locust 工具中实现这种类型的执行机制。这可能吗?
请帮助我澄清上述问题。
2 回答
有什么方法可以在任务集类中获取当前执行的客户端信息?
目前没有。当编排器创建客户端时,发送给客户端的数据不包括此。不过,这种行为已被请求过几次。
假设我正在使用 5 个客户端执行 20 个请求。我可以说每个客户端正在执行 4 个请求(20/5 = 每个请求 4 个)吗?这里使用 5 个客户端执行这 20 个请求的内部机制是什么?
这个问题有不正确的假设。
每个 Locust 都有一个最小和最大重量时间,它决定了任务之间等待的时间。
每个蝗虫根据任务权重和这个间隔随机选择任务。“对 5 个客户端执行 20 个请求”的控制意味着 Locust 将启动 5 个客户端,一旦收到 20 个请求的结果,就会终止。
有可能,取决于您的呼叫需要多长时间,它们将被平均分配。或者,大多数可以由一位客户完成。
这个问题与问题 2 中给出的数据有关,执行是否以迭代方式发生。与第一次迭代一样,客户端 1、2、3、4 和 5 分别执行请求 1、2、3、4 和 5。下一次迭代,客户端 1、2、3、4 和 5 再次分别执行请求 6、7、8、9 和 10。我们如何在 Locust 工具中实现这种类型的执行机制。这可能吗?
您可以将任务集嵌套在一起。但是“迭代”的概念在 Locust 框架中并没有真正的意义。Locust 旨在处理基于权重的随机挑选和创建任务。
如果您的目标是显式迭代,在其中运行一组任务,然后移动到下一个迭代以运行不同的任务,您会发现 Locust 并不能很好地支持这个用例。
您可以 编写自己的客户端来执行此操作并根据需要手动触发事件,但是如果您从根本上想以非预期的方式使用 Locust,我不确定开销是否值得。
- 我认为没有内置支持。您可以在
on_start
方法中自己设置一个 id - 每个 Locust 将在前一个任务完成后触发一个新任务(考虑到等待时间)。如果您的响应时间有很小的变化,您可以假设请求是平均分布的。
- 不,蝗虫一个接一个地挑选任务,但没有等待轮到他们。当 Locust 可用时,它将选择一个任务并执行它。我认为不支持您的要求。