Jmeter http请求完成通知

Jmeter http request completion notification

它们是 Jmeter 中控制 HTTP 请求发送的方法吗?我的场景就像

  1. 发送请求 1
  2. 收到回复 1
  3. 发送请求 2
  4. 收到回复 2

注意:当收到响应时,请求会一个接一个地发送。用并行请求淹没服务器(通过设置 no of thread > 1)将产生错误的响应。所以我希望在收到响应 1 后触发请求 2。

有效的错误解决方案是:

更准确地说,要求是“一个一个地读取存储在 csv 文件中的值并发送 http post 请求”。我想要实现的序列是Send_1、Receive_1、Send_2、Receive_2.......Send_n、Receive_n” .我的线程组设置是

Number of threads =1 Ramp up period =1 Loop Count = 10 ( as I want to read 10 values from csv and send out)

我观察到 Send_1、Send_2、..Send_10 立即发送,没有给服务器足够的响应时间。我应该如何配置才能使发送和接收以锁定步骤的方式进行。

JMeter 默认有这个行为,例如线程组中的每个线程将等待对请求的响应,然后再发送测试计划中的下一个请求。

当您确实希望多个请求同时访问您的服务时,您可以通过更改线程组中的线程数来实现。

使用Synchronizing Timer:

The purpose of the SyncTimer is to block threads until X number of threads have been blocked, and then they are all released at once

Number of Simultaneous Users to Group by

Number of threads to release at once. Setting it to 0 is equivalent to setting it to Number of threads in Thread Group.

你不需要做任何事情,默认情况下,JMeter 在开始下一个采样器之前等待前一个采样器的响应(假设你使用的是“普通”HTTP Request 采样器),如果你是在没有“睡眠”时间的情况下您的设置出现错误 - 这表明您的应用程序存在问题,而不是 JMeter。

如果你需要证据你可以

  1. 添加JSR223 PreProcessor,代码如下:

    log.info(' Iteration: ' + vars.getIteration() +  '; Sampler ' + sampler.getName() + ' started')
    
  2. 添加JSR223 PostProcessor,代码如下:

    log.info(' Iteration: ' + vars.getIteration() +  '; Sampler ' + sampler.getName() + ' ended')
    

其中:

  • sampler.getName() returns 当前采样器标签
  • vars.getIteration()returns线程组的当前循环

如有需要,请参阅 Top 8 JMeter Java Classes You Should Be Using with Groovy 文章了解更多详细信息。

这样您就可以将采样器的开始和结束时间输入 jmeter.log file:

如您所见,结束 Sampler 1 和开始 Sampler 2 之间有几毫秒的时间,因此您不需要引入任何显式等待。