请求返回后,JMeter计时器会启动吗?如果不是,那么该文档在哪里?

时间:2019-02-13 19:17:19

标签: jmeter

TIMTOWTDI没有定义每个计时器的开始和结束:

  

如果您选择向一个线程组添加一个以上的计时器,JMeter将使用计时器的总和,并在执行该计时器所适用的采样器之前暂停该时间。

在此说明中,不清楚是在触发采样器请求时启动计时器还是在采样器请求返回响应时启动计时器。

JMeter docs in 3.4 Timers将常量计时器定义为:

  

如果您希望每个线程在两次请求之间暂停相同的时间,请使用此计时器。

这也让人对“请求之间”的含义含糊不清-是在请求开始之间,还是在一个请求结束与下一个请求开始之间?

阅读Apache JMeter docs for Constant Timer时,作者Malith Jayasinghe将思考时间定义为:

  

...在进行性能测试时,“思考时间”扮演着重要的角色。定义为完成一个请求到开始下一个请求的时间。

这是有关思考时间的定义的一个令人耳目一新的细节,但是我找不到任何证据证明JMeter在文档中的工作方式。

哪里有权威的文档,说明思考时间/等待时间是从发出请求之时开始还是从请求返回之时开始?

3 个答案:

答案 0 :(得分:2)

关于JMeter Timers的文档说:

  

计时器会导致JMeter在其范围内的每个采样器之前延迟一定的时间。

因此,如果您向采样器添加任何计时器-JMeter将在之前等待启动。
如果您在与采样器组相同的scope中添加计时器,JMeter将在每个采样器之前等待指定的时间。

另外,请注意:

  

默认情况下,JMeter线程按顺序执行采样器而不会暂停。

答案 1 :(得分:1)

要正式回答,您应该查看JMeter的Execution order

  

0个配置元素

     

1个预处理器

     

2个计时器

     

3个采样器...

在处理当前采样器之前,通知计时器将执行/延迟

表示计时器的延迟时间是在开始采样之前

您还可以浏览JMeter示例代码,以了解延迟发生在处理示例之前

delay(pack.getTimers());
    SampleResult result = null;
    if (running) {
        Sampler sampler = pack.getSampler();
        result = doSampling(threadContext, sampler);

答案 2 :(得分:0)

如果要在响应后设置计时器或等待线程,请添加 BeanShell PostProcessor 并添加Thread.sleep(5000);

这将在获得当前线程的响应后,等待下一个线程5秒钟。