【问题标题】:JMeter - sharing a delay between requests across multiple ThreadGroupsJMeter - 在多个线程组的请求之间共享延迟
【发布时间】:2014-04-15 05:38:53
【问题描述】:

我们已经编写了包含以下详细信息的测试脚本

线程数(用户):400 加速时间:480 秒(8 分钟) 脚本运行时间:900 秒(15 分钟)

脚本的树形结构是

ThreadGroup
|---Request1
|---Request2
|---Request3
|---Request4
|---Request5
|---Constant timer(5 seconds)

现在我对这个脚本的期望在每个 http 请求样本之间应该有 5 秒的延迟。但这不是它看起来的工作方式。我注意到,在请求 1 和请求 2 的每个请求类型之间,它会增加 5 秒的延迟,而不一定是在每个请求样本之间

例如现在发生的事情是

Request 1 sample 1
Request 1 sample 2
\\Run for 5 Seconds
Request 2 sample 1
Request 2 sample 2

我正在寻找的输出是

Request1 sample 1
5 seconds delay
Request 1 sample 2
5 seconds delay
Request 2 sample 1
5 seconds delay
Request 3 sample 1

我在这里做错了吗?我搜索了 Google 和 Stackoverflow,但没有得到我想要的确切场景。

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    鉴于您在当前输出上方提供的 JMeter 设置看起来是正确的。

    也许这里的困惑在于加速周期和常量计时器的确切工作方式,因为在这种情况下,这些应该是影响执行顺序的唯一因素。

    Apache JMeter 网站实际上将加速阶段的工作情况做得最好:

    加速期告诉 JMeter 需要多长时间才能“加速”到所选线程的全部数量。如果使用 10 个线程,并且加速周期为 100 秒,那么 JMeter 将需要 100 秒才能让所有 10 个线程启动并运行。每个线程将在前一个线程开始后 10 (100/10) 秒后开始。如果有 30 个线程和 120 秒的加速周期,那么每个连续的线程将延迟 4 秒。 (https://jmeter.apache.org/usermanual/test_plan.html)

    此外,Constant Timer 还为您提供了一种在测试计划中分隔各个步骤的方法。重要的是,这仅在每个线程内

    因此,您有一个加速期,这意味着大约每秒都会启动一个新线程。在每个线程内,每个请求都会延迟 5 秒。这为我们提供了大致如下的输出:

    1. (开始)线程 1 启动 - 请求 1 执行(暂停 5 秒)
    2. (1 秒)线程 2 启动 - 请求 1 执行(暂停 5 秒)
    3. (2 秒)线程 3 启动 - 请求 1 执行(暂停 5 秒)
    4. (3 秒)线程 4 启动 - 请求 1 执行(暂停 5 秒)
    5. (4 秒)线程 5 启动 - 请求 1 执行(暂停 5 秒)
    6. (5 秒)线程 6 启动 - 请求 1 执行(暂停 5 秒)+ 线程 1 执行请求 2。

    正如您所看到的,直到很久以后,在第一个请求发生的一个块之后,您的第二个请求才开始发生,与您看到的输出很相似。

    根据我对您的问题的理解,您只希望所有线程每 5 秒发生一次请求。要实现这一点,请查看恒定吞吐量计时器。恒定吞吐量计时器的设置允许您在“所有活动线程”之间共享其计时器,以便您在服务器上创建恒定负载。

    为了在开始时获得正确的执行顺序,与加速期有关。

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-27
      • 2019-02-09
      相关资源
      最近更新 更多