小编典典
鉴于您在当前输出上方提供的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秒发出一个请求。要实现此目的,请看恒定吞吐量计时器。恒定吞吐量计时器具有一个设置,可让您在“所有活动线程”之间共享其计时器,以便在服务器上创建恒定负载。
为了在开始时获得执行顺序,请正确执行加速周期。
2020-07-24