2014-04-14 47 views
0

我们已经编写测试脚本有以下细节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,但我没有得到所描述的确切场景,因为我想。

回答

0

考虑到上面提供的JMeter设置,您的当前输出看起来正确。

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

阿帕奇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秒发生一次请求。为了达到这个恒定吞吐量定时器的目的。常量吞吐计时器有一个设置,可让您在“所有活动线程”之间共享其计时器,以便在服务器上创建恒定负载。

为了在开始阶段获得执行的顺序,正确使用上升阶段。