【问题标题】:JMeter: Fire multiple concurrent HTTP requests for a single userJMeter:为单个用户触发多个并发 HTTP 请求
【发布时间】:2025-12-04 22:55:02
【问题描述】:

我有一个带有线程组和 Cookie 管理器的 JMeter 负载测试脚本。

线程组中的用户首先使用HTTP采样器登录获取cookie。

然后一个循环控制器触发一个交错采样器,该采样器在几个 HTTP 采样器之间交替,这些 HTTP 采样器触发对服务器的查询。

现在我希望交错控制器的选项之一为同一用户触发两个或三个并发请求,在每个请求中发送相同的 cookie。
我该怎么做?

【问题讨论】:

    标签: concurrency automated-tests jmeter session-cookies


    【解决方案1】:

    如果您需要同时下载一个页面的资源,那么在 http sampler gui 的底部有一个复选框。但我想你已经知道了,所以你所做的似乎很好。

    一个更好的性能变体是使用 Groovy + JSR223(添加缓存键以便编译只发生一次)。

    是模拟 Ajax 调用还是别的什么?

    【讨论】:

    • 我知道资源检索,是的,甚至考虑下载带有 img 标签查询的假 html 页面,以便下载该页面会触发同时查询:) 我们正在模拟富客户端 -服务器和服务器到服务器调用数据检索服务。感谢您使用 groovy 的提示,会看看!
    • 奖励赏金以感谢深思熟虑的回应。
    • 谢谢,虽然你至少应该得到一半 :)
    【解决方案2】:

    我们最终做了什么:

    • beanshell 采样器在登录请求后从 cookie 管理器中检索 sessionID cookie 值并将其设置在一个变量中。
    • 另一个 beanshell 采样器作为子代添加到交错采样器。这个 beanshell 采样器从变量中检索 cookie。然后它为每个请求启动一个新线程,该线程使用 cookie 值触发 HTTP 请求,并检查结果。原始的 beanshell 线程将所有启动的线程连接起来并组合结果。

    这对编码来说相当麻烦。你能想出更好的方法吗?

    【讨论】: