【问题标题】:Does a Jmeter thread really approximate a user?Jmeter 线程真的接近用户吗?
【发布时间】:2017-02-01 00:40:51
【问题描述】:

我正在尝试使用 Recording Controller 设置 JMeter 负载测试。

这会导致网络浏览器的所有调用重复 - 包括 css 文件、js 文件和图像。

假设 Web 浏览器会同时获取这些信息(同时执行大约 10 个 Web 请求)。 jmeter 文档倾向于将 1 个用户等同于 1 个线程 - 但这与现代 Web 浏览器的工作方式不一致。

在设置负载测试时,我是否需要为每个用户使用 10 个线程?

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    严格来说,JMeter 无法模拟浏览器。 JMeter 有其自身的局限性,例如不解析 .js 文件(根据 3.0 版本)、从事件发送 ajax 请求等。

    但是,对于您的问题,JMeter 提供支持。

    因此,您可以根据自己的要求指定并发池大小,例如将并发池大小值设置为 10,这样可以解决您的问题。

    今天的浏览器通常并发发送请求,每个浏览器都有自己的最大值,用于可以同时建立的最大连接数。

    参考以下链接: Max parallel http connections in a browser?How to solve Chrome's 6 connection limit when using xhr polling

    当您使用“检索嵌入式资源”并设置并发池大小时,您只需要添加父采样器,它会触发 Jmeter 本身的 .css、.js 文件等资源请求。 (例如:仅添加 stackoverflow.com,它会自动加载所有资源,如 .css、.js)。在录制过程中,所有这些请求都是单独记录的,因此您需要将它们全部删除或创建一个仅包含父采样器的新计划/线程组。

    注意:正如我所提到的,从 .js、.csv 触发的请求不会被发送,因为 Jmeter 不会像浏览器那样解析它们。您只需将这些请求明确添加为采样器。添加查看结果树并比较 Jmeter 和浏览器触发的请求(F12 -> 网络选项卡),以了解 Jmeter 缺少哪个请求。

    【讨论】:

    • 有关信息 JMeter 从 3.0 版开始解析 CSS
    【解决方案2】:
    1. 首先,不要记录对嵌入式资源的请求。如果您单击Add Suggested Excludes 按钮,HTTP(S) 测试脚本记录器将自动填充正则表达式以过滤图像、脚本和样式。

    2. 第二。要模拟浏览器行为:对页面的 1 个主要请求和几个用于检索内容的并行请求,您可以使用 HTTP 请求采样器的“高级”选项卡(或者更好的 HTTP Request Defaults)。您还可以将嵌入式资源限制在测试域下的应用程序中

    3. 真正的浏览器下载图像、样式和脚本。然而,行为良好的浏览器只执行一次,在随后的请求中,这些实体将从缓存中返回。因此,请确保将HTTP Cache Manager 添加到您的测试计划中以表示浏览器缓存,这样您就可以避免在现实中不会发生的额外请求使您的服务器不堪重负。

    有关使用上述测试元素的更详细说明和说明,请参阅How To Make JMeter Behave More Like A Real Browser

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-24
      • 1970-01-01
      • 2010-09-08
      相关资源
      最近更新 更多