2
  1. 有什么方法可以在任务集类中获取当前执行的客户端信息?我们可以在 Jmeter 中获取线程号。这样我们可以在 Locust 工具中获取客户编号吗?
  2. 假设我正在使用 5 个客户端执行 20 个请求。我可以说每个客户端正在执行 4 个请求(20/5 = 每个请求 4 个)吗?这里使用 5 个客户端执行这 20 个请求的内部机制是什么?
  3. 这个问题与问题 2中给出的数据有关,执行是否以迭代方式发生。与第一次迭代一样,客户端 1、2、3、4 和 5 分别执行请求 1、2、3、4 和 5。下一次迭代,客户端 1、2、3、4 和 5 再次分别执行请求 6、7、8、9 和 10。我们如何在 Locust 工具中实现这种类型的执行机制。这可能吗?

    请帮助我澄清上述问题。

4

2 回答 2

1

有什么方法可以在任务集类中获取当前执行的客户端信息?

目前没有。当编排器创建客户端时,发送给客户端的数据不包括此。不过,这种行为已被请求过几次。

假设我正在使用 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,我不确定开销是否值得。

于 2017-09-21T14:21:58.767 回答
1
  1. 我认为没有内置支持。您可以在on_start方法中自己设置一个 id
  2. 每个 Locust 将在前一个任务完成后触发一个新任务(考虑到等待时间)。如果您的响应时间有很小的变化,您可以假设请求是平均分布的。
  3. 不,蝗虫一个接一个地挑选任务,但没有等待轮到他们。当 Locust 可用时,它将选择一个任务并执行它。我认为不支持您的要求。
于 2017-09-21T11:22:24.380 回答