JMeter - 在多个ThreadGroup之间共享请求之间的延迟

时间:2014-04-14 20:55:56

标签: 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

我在这里做错了什么。我搜索过谷歌和Stackoverflow,但我没有得到我想要的确切场景。

1 个答案:

答案 0 :(得分:0)

鉴于您在上面提供的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.
  7. 正如您所看到的那样,直到很久以后,在第一个请求发生阻止之后,您的第二个请求才开始发生,就在您看到的输出行的大部分位置。

    根据我对您的问题的理解,您只需要在所有线程中每5秒发生一次请求。要实现这一目标,请查看恒定吞吐量计时器。恒定吞吐量计时器具有一个设置,可让您在“所有活动线程”中共享其计时器。这样你就可以在服务器上创建一个恒定的负载。

    为了在开始正确的游戏中获得执行顺序,以及加速期。

相关问题