【问题标题】:JMeter - Keep current Threats ActiveJMeter - 保持当前威胁活跃
【发布时间】:2020-12-21 08:59:56
【问题描述】:

我想问一个关于如何执行负载测试场景的问题。我有多个威胁组,每个组执行一个场景(获取、发布、放置请求),每个场景中的威胁数量不同。每个场景都需要 X(未知)时间来执行,具体取决于它有多少请求。我想要的是一起运行它们并在特定时间内保持负载(保持威胁处于活动状态)。

我举个例子:

  • 威胁组 1 - 诉用户 75
  • 威胁组 2 - 诉用户 50
  • 威胁组 3 - 诉用户 30

我想一起执行所有威胁组并保持负载 30 分钟。我遇到的问题可以说威胁组 1 只需 2 分钟即可执行,威胁组 2 只需 3 分钟,威胁组 3 只需 1 分钟。我不能勾选无限选项,因为我只有特定数量的数据可以使用。对于第一个场景,我有 75 个用户(数据),如果他们一旦执行该场景就无法再次执行,因此我需要另外 75 个(数据),而我没有。

有没有办法做到这一点?让每个威胁组中的威胁存活特定时间是否可行?或者会在特定时间内执行请求并覆盖整个持续时间的东西? (30 分钟)

在威胁组中设置参数,如下图所示,当每个场景结束时,它会关闭它的威胁,所以我永远不会让 30 个用户在特定时间内并行运行。

下图显示场景 1(粉红色)比场景 2(参考)更快地结束了威胁。这里的设置如下:

  1. 每个场景 5 中的威胁
  2. 加速 10 秒
  3. 持续时间 90 秒

【问题讨论】:

    标签: jmeter performance-testing jmeter-5.0 jmeter-4.0


    【解决方案1】:

    如果我理解正确,您会受到数据的限制,并且每个用户一个循环有一个数据点。因此,我将尝试操作 rampup 并将其设置为 1800 和 loop = 1 为每个线程组。取消选中“指定线程生命周期”。 Jmeter 将每 1800/75 秒运行一次新线程,例如 TG_1。整个测试将运行 1800 秒 + 最后一个线程的循环时间。如果此负载配置文件适合您的应用程序,则必须修改。

    【讨论】:

    • 感谢您的回复。据我了解,这不是正确的方法吗?正确的方法是拥有更多的数据和循环威胁组,直到达到指定的持续时间。问题是即使有不同的启动时间,一些威胁也会更早结束,因为它们需要更少的时间来完成所有请求,因此其中一些会更早完成
    • 假设我们在每个组中拥有相同数量的用户,一些威胁组将比另一个组更早完成,因此我将不具有一致性。就像我添加的最后一张图片。
    • 是的 - 但是每个 TG 中的相同加速将强制进行大致相同的测试时间,因此在您的情况下它可能是解决方法。另外请记住,如果您有“指定”,jmeter 将使用更短的测试持续时间线程生命周期”,所以停止测试的条件是:如果循环计数不是 -1 或永远,持续时间将为 min(持续时间,循环计数 * 迭代持续时间)bz.apache.org/bugzilla/show_bug.cgi?id=62914
    【解决方案2】:

    试试Ultimate Thread group plugin

    使用不同的最终线程组并根据您的要求更改线程,但保持其他参数相同,如下所示。 因此,您的线程会有所不同,但其他条件可能会保持不变。比如初始延迟、启动时间、holdloadfor sec 和关机。

    您可以使用plugin manager 下载jpgc 提供的所有插件的jpgc@stardard 集。然后,您将可以选择从 Threads(Users) 或从我们添加普通/标准线程组的同一位置添加 jpgc 最终线程组。

    【讨论】:

      【解决方案3】:

      据我了解,您有 75 个用户的数据,数据不能重复。而且你需要保持负载 30 分钟。

      简单来说,我可以说除非你有更多的数据,否则你不能保持这么长时间的负载,或者你可以重复数据。

      如果 75 个用户只用了 1 分钟甚至 5 分钟,这意味着您没有增加人工反应时间。要添加它,您可以简单地使用计时器。这会延迟采样器的执行。

      【讨论】:

        【解决方案4】:

        如果您的第一个线程组在 2 分钟内执行 75 个请求,并且您希望它在 30 分钟内执行,那么实现此目标的唯一方法是让 JMeter 慢 15 倍。 JMeter提供了多种Timers,每个都允许在请求之间引入延迟,主要是为了模拟真实用户"think time"

        2 分钟内 75 个请求大约是每分钟 37 个请求,如果你需要让它慢 15 倍,你需要每分钟执行 ~2.4 个请求。

        因此,您可以将 Constant Throughput Timer 添加到您的第一个线程组并进行如下配置:

        这样你将在 30 分钟内收到 72 个请求。

        同样你可以减慢剩余的 2 个线程组

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-21
          • 2011-08-07
          • 1970-01-01
          • 1970-01-01
          • 2020-12-06
          • 1970-01-01
          相关资源
          最近更新 更多