我有一个 ASP.NET MVC 4 站点在 64 位 Windows Server 2008 R2 标准上运行在 Xeon E7540 @ 2 GHz 2 核、8 GB Ram 上。
应用程序池使用具有集成托管管道模式的 .NET 4.0。
我用 OutputCaching 修饰了我的 Index 函数:
[OutputCache(CacheProfile = "ContentPageController.Index")]
以及 Web.config 中的以下内容
<add name="ContentPageController.Index" duration="60" varyByParam="none" location="Server" />
索引操作访问 MS SQL 数据库,我在数据库服务器上运行 SQL Profiler,我可以看到,如果我在 60 秒内从浏览器刷新同一页面,则数据库仅被命中一次,这表明 OutputCache 是跑步。
但是,当我对站点进行负载测试时,该站点在 60 秒内生成了 1-50 个用户(附图),OutputCache 在测试开始后几乎立即无法工作,我可以在 SQL Profiler 中看到查询命中数据库,而我本来可以只期望第一个请求访问数据库。
测试大约 15 秒后,Webserver CPU 开始在 85% 和 100% 之间波动,而工作进程的私有内存没有增加,保持在测试前从 147MB 开始的 149MB 标记以下。
我完全一无所知,知道我应该寻找什么吗?
非常感谢!