Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JMeter-跨多个线程组在请求之间共享延迟_Jmeter - Fatal编程技术网

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

JMeter-跨多个线程组在请求之间共享延迟,jmeter,Jmeter,我们已经编写了包含以下细节的测试脚本 线程数(用户):400 爬升时间:480秒(8分钟) 脚本运行时间:900秒(15分钟) 脚本的树结构是 ThreadGroup |---Request1 |---Request2 |---Request3 |---Request4 |---Request5 |---Constant timer(5 seconds) 现在,我对这个脚本的期望是,在每个http请求示例之间应该有5秒的延迟。但这似乎不是它的工作方式。我注意到,在每个请求类型(请求1和请求2)

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

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

也许这里的混乱是围绕着上升周期和恒定计时器的精确工作,因为在这种情况下,这些应该是影响执行顺序的唯一因素

ApacheJMeter站点实际上将启动阶段的工作做得最好:

爬升周期告诉JMeter需要多长时间才能“爬升”到所选的全部线程数。如果使用10个线程,并且爬升周期为100秒,那么JMeter将花费100秒来启动并运行所有10个线程。每个线程将在前一个线程开始后10(100/10)秒开始。如果有30个线程且爬升周期为120秒,则每个后续线程将延迟4秒。()

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

因此,有效地说,你有一个上升期,这意味着一个新的线程大约每秒钟启动一次。在每个线程中,每个请求都会延迟5秒。这为我们提供了大致如下的输出:

  • (启动)线程1启动-执行请求1(暂停5秒)
  • (1秒)线程2启动-执行请求1(暂停5秒)
  • (2秒)线程3启动-执行请求1(暂停5秒)
  • (3秒)线程4启动-执行请求1(暂停5秒)
  • (4秒)线程5启动-执行请求1(暂停5秒)
  • (5秒)线程6启动-请求1执行(暂停5秒)+线程1执行请求2
  • 正如您所看到的,直到很久以后,在第一个请求块发生之后,您的第二个请求才开始发生,这与您所看到的输出是一致的

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

    为了获得启动时的执行顺序,请正确调整爬升周期