我正在使用Jmeter进行负载测试。当使用缓存存储一些用户信息时,我得到了stackoverflow异常。我在线程组中设置了HTTP缓存管理器,我认为它将作为浏览器缓存。但是当我只将用户信息存储在服务器缓存中时,我仍然得到了异常? (我确保代码将信息存储在服务器端缓存中)。
有人对这个问题有所了解吗?或者任何人都可以在Jmeter测试计划中提供有关服务器端/浏览器端缓存的一些信息? (我已经检查了一些网站,但仍然无法弄清楚它的概念)谢谢。
附:我正在研究ASP.net Web应用程序
更新:我检查了问题是由服务器端的缓存引起的。禁用缓存后不会出现异常。还有一些信息,我使用set方法更新缓存的缓存。我仍然无法发现StackOverflow异常的解决方案或原因。
由于Stackoverflow发生在服务器端,因此您应该调查一个错误。
它可能是由jmeter脚本上缺少的参数引起的,该参数是从可以在浏览器端缓存的页面中提取的。由于JMeter缓存不缓存页面内容(只有页面在缓存中的事实),因此在JMeter中它将为空,因此如果您有一个提取,它将给出一个空值。
现在关于缓存管理器,它旨在模拟浏览器缓存。
您可以阅读参考文档:
如果样本成功(即响应代码为2xx),则为URL保存Last-Modified和Etag(以及相关时过期)值。在执行下一个样本之前,采样器会检查缓存中是否有条目,如果是,则为请求设置If-Last-Modified和If-None-Match条件标头。
此外,如果选择“使用Cache-Control / Expires标头”选项,则会根据当前时间检查Cache-Control / Expires值。如果请求是GET请求,并且时间戳是将来的,则采样器立即返回,而不从远程服务器请求URL。这旨在模拟浏览器行为。请注意,如果Cache-Control标头为“no-cache”,则响应将作为预过期存储在缓存中,因此将生成条件GET请求。如果Cache-Control具有任何其他值,则处理“max-age”到期选项以计算条目生存期,如果丢失则将使用expire头,如果还缺少条目将按照RFC 2616第13.2.4节中的规定进行缓存。使用Last-Modified时间和响应日期。