1

过去几周我一直在使用 Jmeter。在我的 Jmeter 测试中没有端到端的用例(例如登录 >> 转到个人资料页面 >> 注销)。我只是直接点击了我的应用程序的几个重要页面。例如注册页面、主页、关于我们等。

这些页面的服务方式:

场景 1:用户 >> Akamai >> 服务器 >> Akamai >> 用户

场景 2:用户 >> Akamai >> 用户(即在 Akamai 中缓存所有页面之后)

当我运行 Jmeter 测试时,有 99% 的可能性是从 Akamai 提供服务,即场景 2。

问题:

  1. 场景 2 是否需要 HTTP 缓存管理器?我的意思是为什么我需要在 Akamai 缓存两次页面,同时在我机器的 RAM 上缓存页面?
  2. 仅当对 #1 的回答为“是”时:这是将缓存管理器与 cookie 管理器一起使用的强制性/最佳选择吗?
  3. 仅当对 #1 的回答为“是”时:我的脚本编写为:Test Plan >> Thread group >> Throughput Controller >> 80+ HTTP Request Sampler (actually pages)。那么我需要在吞吐量控制器级别还是在每个 HTTP 请求采样器内部的 HTTP 缓存管理器? 在此处输入图像描述
4

2 回答 2

0

当您进行负载测试时,您必须尽可能接近真实用户,否则您的负载测试没有意义。所以关于你的问题:

  1. 是的,您需要将 HTTP 缓存管理器添加到您的测试计划中。此外,您需要“告诉”所有 HTTP 请求采样器

    • “检索所有嵌入式资源”
    • 并为此使用“并行下载”

    将此配置应用于所有 HTTP 请求采样器的最佳方法是使用HTTP 请求默认值

  2. HTTP Cache Manager 和 HTTP Cookie Manager 是不同的野兽,但鉴于您正在构建 Web 测试计划,您需要添加 cookie 支持

  3. 每个线程组都需要有 HTTP 缓存管理器/Cookie 管理器。有关详细信息,请参阅范围规则用户手册章节。

也不要忘记使用HTTP 标头管理器来表示浏览器标头。

于 2017-01-23T06:07:46.877 回答
-1

根据您的问题,我了解到 Akamai 是一个提供静态页面的 CDN。

记住这一点,我的回答如下:

  1. 场景 2 是否需要 HTTP 缓存管理器?我的意思是为什么我需要在 Akamai 缓存两次页面,同时在我机器的 RAM 上缓存页面?

是或否。取决于您要实现的配置。您必须了解 Akamai 提供的黑白页面(CDN 缓存)与本地存储在用户计算机上的页面不同。

本地缓存 - 检索页面的最快方式。(由 Cach-Control: max-age 指令实现)。如果指定,则甚至无需访问 Akamai 服务器。浏览器从本地缓存本身获取页面。如果 max-age 已过期,则浏览器发送重新验证请求以检查它是否具有最新副本。CDN/Server 对其进行验证,如果副本是最新的,则发送 304(未修改)。否则,使用新的 max-age 提供的页面的最新副本(仅在实施时才发送 max-age)。

所以,关键是如何配置服务器来处理缓存。如果本地缓存是使用 Expires/Cache-Control 实现的,那么您必须添加HTTP Cache Manager到测试计划中。

2. 仅当对#1 的回答为“是”时:这是将缓存管理器与 cookie 管理器一起使用的强制性/最佳选择吗? 通常,缓存独立于用户。Cookie 管理器是通过发送 Cookie 使用户真实。缓存管理器在加载页面时减少网络延迟(往返)。如果登录用户和匿名用户的缓存机制实现不同,那么您必须考虑这两种情况。否则,不需要 Cookie 管理器。

3. 仅当对#1 的回答为“是”时:我的脚本编写为:测试计划 >> 线程组 >> 吞吐量控制器 >> 80+ HTTP 请求采样器(实际上是页面)。那么我需要在吞吐量控制器级别还是在每个 HTTP 请求采样器内部的 HTTP 缓存管理器?

通常,您HTTP Cache Manager在层次结构的顶部(在测试计划或线程组下)添加 ,因此它将适用于所有采样器(子级)。

注意:我强烈建议使用Browser -> F12 -> Network tab. 这给出了发送到加载浏览器的每个 HTTP 请求,并从本地缓存或 CDN 或服务器等中检索响应。

请仔细阅读以下标题以完全了解该行为:

  1. Cache-Control 标头(max-age 指令)
  2. ETag 标头
  3. 最后修改的标题
  4. 过期

以下是开始的参考:

  1. http://dev.mobify.com/blog/beginners-guide-to-http-cache-headers/
  2. https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching
  3. https://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html
于 2017-01-22T07:07:59.773 回答