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