ASP.Net / IIS 7.5 无法识别用于 OutputCache 的 jMeter

Posted

技术标签:

【中文标题】ASP.Net / IIS 7.5 无法识别用于 OutputCache 的 jMeter【英文标题】:ASP.Net / IIS 7.5 not recognising jMeter for OutputCache 【发布时间】:2014-04-05 15:01:52 【问题描述】:

我已经在本地建立了一个非常基本的 Web 窗体站点,以找出当我通过 jMeter 对 .Net 网站进行负载测试时,页面上的 OutputCache 指令被忽略的原因。

我在页面顶部使用这个指令:

<%@ OutputCache Duration="3600" VaryByParam="none" %>

为了检查缓存是否正常工作,我在页面加载中有一个简单的 log4net 日志:

protected void Page_Load(object sender, EventArgs e)

    log.Debug("In Page_Load");

当通过 Web 浏览器浏览站点时,OutputCache 的行为与我预期的一样,因为我在文件中获得了一次日志:

调试 [2014-04-05 15:44:56,905] - 在 Page_Load 中

当我继续将浏览器刷新到同一页面以及使用其他浏览器时,没有更多日志,这是预期的行为。

然后我重新启动了 IIS,然后执行了一个非常简单的 5 个线程的 jMeter 测试,延迟为 1000 毫秒,我得到 5 个“In Page_Load”日志,而不是上面预期的 1 个。

如果我重新启动 IIS,在浏览器窗口中打开站点,然后执行负载测试,我会从第一个手动浏览器请求中获取单个日志,并且没有更多日志,因为似乎通过浏览器执行第一个请求会填充 Web 服务器缓存和 jMeter 负载测试按预期运行。

有人对 jMeter 和 .Net OutputCache 有经验吗?

【问题讨论】:

【参考方案1】:

我没有使用 .Net OutputCache 的经验,但听起来您的简单 JMeter 脚本“看起来”不同于 IIS,而不是浏览器。

我建议使用内置的 JMeter http 记录器[1](以前称为 JMeter 内置代理)或 BlazeMeter 的 JMeter Chrome 插件 [2] 记录实际的浏览器会话。

我猜回放实际的浏览器请求可能会奏效。

[1]http://jmeter.apache.org/usermanual/component_reference.html#HTTP(S)_Test_Script_Recorder [2]https://chrome.google.com/webstore/detail/blazemeter-the-load-testi/mbopgmdnpcbohhpnfglgohlbhfongabi?hl=en

更新 1: 试试这些场景: A - 1 个线程和 5 个循环(而不是 5 个线程和 1 个循环) B - 在实际脚本中使用循环控制器,而不是使用线程组循环。 C - 你可以尝试用真正的浏览器加载页面 5 次并在加载之间完全清除所有缓存/cookies/历史记录/等吗?

我猜这可能与 cookie 有关,但根据您之前所说的,您使用不同的浏览器并且没有发现问题是没有意义的。也许那些浏览器已经有一些客户端cookie?

【讨论】:

我也是这么想的。我没有听说过 jMeter 测试记录器,所以很高兴知道。试过了,但不幸的是问题是一样的。 不确定这是否相关,但您的脚本中的缓存设置如何?您是否使用缓存管理器并检查了使用缓存控制?你能把你的脚本上传到某个地方吗? 是的,HTTP 缓存管理器已添加到线程组并选择了使用缓存控制 脚本在这里。这是非常基本的dl.dropboxusercontent.com/u/2612395/TestScript.jmx 我看了你的剧本。 JMeter 的外观与使用不同的浏览器(cookies??)必须有不同的 something

以上是关于ASP.Net / IIS 7.5 无法识别用于 OutputCache 的 jMeter的主要内容,如果未能解决你的问题,请参考以下文章

IIS 7.5 ASP.Net 和远程共享

如何使用 IIS 7.5 压缩来自 ASP.NET MVC 的 Json 结果

ASP.Net MVC 3/4 托管在 IIS 7.5 默认处理程序映射上

IIS 7.5、ASP.NET、模拟和访问 C:\Windows\Temp

IIS 7.5 上的 ASP.NET MVC

IIS 7.5 上的 ASP.NET MVC