我们编写了具有以下详细信息的测试脚本
线程数(用户):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 :(得分: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秒。这给我们的输出大致如下:
正如您所看到的那样,直到很久以后,在第一个请求发生阻止之后,您的第二个请求才开始发生,就在您看到的输出行的大部分位置。
根据我对您的问题的理解,您只需要在所有线程中每5秒发生一次请求。要实现这一目标,请查看恒定吞吐量计时器。恒定吞吐量计时器具有一个设置,可让您在“所有活动线程”中共享其计时器。这样你就可以在服务器上创建一个恒定的负载。
为了在开始正确的游戏中获得执行顺序,以及加速期。