JMeter-在多个线程组之间共享请求之间的延迟

我们编写了具有以下详细信息的测试脚本

线程数(用户):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设置看起来正确。

也许这里的困惑是围绕加速周期和恒定定时器的确切工作原理,因为在这种情况下,这些应该是影响执行顺序的唯一因素。

Apache JMeter站点实际上将加速阶段的工作效果最佳:

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

此外,常量计时器为您提供了一种在测试计划中排列各个步骤的方法。重要的是,这 。

如此有效,您就有一个加速期,这意味着一个新线程大约每秒启动一次。在每个线程内,每个请求都会延迟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秒发出一个请求。要实现此目的,请看恒定吞吐量计时器。恒定吞吐量计时器具有一个设置,可让您在“所有活动线程”之间共享其计时器,以便在服务器上创建恒定负载。

为了在开始时获得执行顺序,请正确执行加速周期。

以上是 JMeter-在多个线程组之间共享请求之间的延迟 的全部内容, 来源链接: utcz.com/qa/429057.html

回到顶部