JMeter-在多个线程组之间共享请求之间的延迟
我们编写了具有以下详细信息的测试脚本
线程数(用户):400加速时间:480秒(8分钟)脚本运行时间:900秒(15分钟)
脚本的树结构是
ThreadGroup|---Request1
|---Request2
|---Request3
|---Request4
|---Request5
|---Constant timer(5 seconds)
现在,我期望每个http请求样本之间的脚本都不会有5秒的延迟。但这似乎并不起作用。我注意到在请求1和请求2的每个请求类型之间,它增加了5秒的延迟,而在每个请求样本之间并不一定
例如现在发生的是
Request 1 sample 1Request 1 sample 2
\\Run for 5 Seconds
Request 2 sample 1
Request 2 sample 2
我正在寻找的输出是
Request1 sample 15 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执行(暂停5秒钟)
- (1秒)线程2启动-请求1执行(暂停5秒)
- (2秒)线程3启动-请求1执行(暂停5秒)
- (3秒)线程4启动-请求1执行(暂停5秒)
- (4秒)线程5启动-请求1执行(暂停5秒)
- (5秒)线程6启动-请求1执行(暂停5秒钟)+线程1执行请求2。
如您所见,直到第一个请求发生一个块之后,第二个请求才开始发生,直到您看到的输出为止。
据我对您的问题的了解,您只希望在所有线程中每5秒发出一个请求。要实现此目的,请看恒定吞吐量计时器。恒定吞吐量计时器具有一个设置,可让您在“所有活动线程”之间共享其计时器,以便在服务器上创建恒定负载。
为了在开始时获得执行顺序,请正确执行加速周期。
以上是 JMeter-在多个线程组之间共享请求之间的延迟 的全部内容, 来源链接: utcz.com/qa/429057.html