JMeter-如何模拟长轮询客户端?

JMeter-如何模拟长轮询客户端?,jmeter,long-polling,Jmeter,Long Polling,我有一个web客户端轮询服务器的场景。根据响应中的数据,允许/拒绝他们访问某些资源。客户端动态地对这些更改做出反应,并向用户显示资源或某个等待页面(拒绝)。这是通过长轮询机制实现的。如果资源可用,用户可以进行交互,例如回答问题 我有一个包含这种长轮询机制的测试计划。我最初尝试将轮询添加到请求循环中,以根据实际客户机进行模拟,但我的请求随后被延迟,直到长轮询请求得到响应 Thread group | |- Get State from server (saves value in variab

我有一个web客户端轮询服务器的场景。根据响应中的数据,允许/拒绝他们访问某些资源。客户端动态地对这些更改做出反应,并向用户显示资源或某个等待页面(拒绝)。这是通过长轮询机制实现的。如果资源可用,用户可以进行交互,例如回答问题

我有一个包含这种长轮询机制的测试计划。我最初尝试将轮询添加到请求循环中,以根据实际客户机进行模拟,但我的请求随后被延迟,直到长轮询请求得到响应

Thread group
 |
 |- Get State from server (saves value in variable) - no long polling here
 |- Request loop
 |  |- If Controller (checks the variable) 
       |- Loop until all resources are processed
          |- Get State - long poll **this blocks the user response until the timeout for the server response is met**
          |- User response
然后我尝试在一个单独的循环中运行轮询。然而,在执行轮询循环时,似乎再也不会进入请求循环。我使用调试采样器检查,只要服务器上发生更改,轮询循环确实会更改变量

Thread group
 |
 |- Get State from server (saves value in variable) - no long polling here
 |- Request loop
 |  |- If Controller (checks the variable) 
 |     |- Loop until all resources are processed
 |        |- User response
 |
 |- Long-polling loop
 |  |- Set variable

是否有一种解决方案可以接近真实场景?

您必须从不同的线程组发送长轮询。接下来的问题是如何在两个线程组之间共享会话信息。我通过将会话信息(cookies等)写入一个文件并在不同的线程中读取它们来实现这一点


因此,一个线程组可以执行常规请求。另一个线程组将进行长时间的轮询。这是使用jmeter模拟并行http请求的方法。对我来说,它起作用了。

你能提供两个你尝试过的模式吗?我对你的问题有点困惑,试着让它更清楚一点,我编辑了我的文章,让它包含更多的细节,我也重新表述了大部分内容。希望现在更清楚了。模式现在更为详细,但并没有显示所有细节。我尽量保持简单;-)是否像这里的Ajax长轮询中描述的那样是长轮询:对于Get State,您希望发生什么?我不能百分之百确定是否是Ajax长轮询,但我认为是这样。与链接中的示例相比,我们实现的唯一区别在于,即使没有数据更改,我们的服务器也总是在某个超时后响应。Get状态在最好的情况下应该与其他请求并行出现,并且在轮询时不会干扰它们。它基本上充当一个关闭或打开的门,以便客户端知道特定资源可用或关闭。没有人知道如何做到这一点:(