Jmeter缓存管理器使用

Jmeter cache manager usage

我正在使用 Jmeter 进行负载测试。 我在使用缓存存储一些用户信息时出现了Whosebug异常。 我在线程组中设置了 HTTP 缓存管理器,我认为它将作为浏览器缓存工作。但是,当我只将用户信息存储在服务器缓存中时,如何仍然出现异常? (我确保代码将信息存储在服务器端缓存中)。

有人对这个问题有一些想法吗?或者任何人都可以在 Jmeter 测试计划中提供有关服务器 side/browser 端缓存的一些信息? (我已经检查了一些网站,但仍然无法弄清楚它的概念) 谢谢。

P.S。我正在开发 ASP.net 网络应用程序

更新: 我检查了问题是由服务器端的缓存引起的。禁用缓存后不会出现异常。还有一些关于缓存的更多信息我使用了set方法来更新缓存。我仍然找不到 Whosebug 异常的解决方案或原因。

由于 Whosebug 发生在服务器端,因此存在您应该调查的错误。

这可能是由于您的 jmeter 脚本缺少参数造成的,该脚本是从可在浏览器端缓存的页面中提取的。 由于 JMeter 缓存不缓存页面内容(仅页面在缓存中这一事实),它在 JMeter 中将为空,因此如果您进行提取,它将给出一个空值。

现在关于缓存管理器,它旨在模拟浏览器缓存。

您可以阅读参考文档:

如果样本成功(即响应代码为 2xx),则 Last-Modified 和 Etag(以及相关的已过期)值将保存为 URL。在执行下一个采样之前,采样器检查缓存中是否有条目,如果有,则为请求设置 If-Last-Modified 和 If-None-Match 条件 header .

此外,如果选择 "Use Cache-Control/Expires header" 选项,则会根据当前时间检查 Cache-Control/Expires 值。如果请求是 GET 请求,并且时间戳是未来的,那么采样器立即 returns,而不从远程服务器请求 URL。这是为了模拟浏览器行为。请注意,如果 Cache-Control header 是 "no-cache",响应将作为 pre-expired 存储在缓存中,因此将生成一个条件 GET 请求。如果 Cache-Control 有任何其他值,则处理 "max-age" 过期选项以计算条目生存期,如果缺少则将使用过期 header,如果还缺少条目将按照 RFC 中的指定进行缓存2616 第 13.2.4 节。使用 Last-Modified 时间和响应日期。