2012-09-01 106 views
4

我有一个MVC 4(Razor)网站,并且为会话和outputCache提供程序启用了Azure缓存(预览)(共同定位)。由于我启用了它,每个Web请求都会导致大量的CPU峰值,并在调试时导致3-5秒的页面响应时间。Azure缓存(预览)OutputCache - 高CPU - 缓慢

我将问题缩小到了outputCache提供者。如果我在web.config中禁用它,该网站运行良好。没有CPU尖峰。我还没有使用页面输出缓存......所以不应该发生读/写操作。会话提供程序通过Azure缓存(预览)正常运行。以下是我的outputCache配置。如果我禁用它,站点运行没有CPU尖峰。有什么想法吗?

<caching> 
    <outputCache defaultProvider="DistributedCache"> 
    <providers> 
     <add name="DistributedCache" type="Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache" cacheName="default" dataCacheClientName="default" /> 
    </providers> 
    </outputCache> 
</caching> 
+0

我也在评估Azure缓存,即使我只考虑了专用角色选项。 当您在调试它时,我假设您在开发结构上本地运行解决方案,对吗?您是否在这些实例之间运行多个web角色的instaces并配置了高可用性(Backup Copies = 1)? – DavideB

+0

你是否在使用缓存来做其他事情?我很想看到Web.Config文件中的'dataCacheClients'配置以及WebRole属性页面的“缓存”选项卡上的缓存设置。 –

+0

我已经格式化了我的机器,安装了VS 2012并重新安装了Azure SDK,重新下载了我的NuGet包,问题依然存在。任何时候,我都会为每个Web请求打开outputCache提供程序的大量CPU峰值。 –

回答

4

看来这个问题是由于Web优化框架。它没有为非默认缓存提供程序启用服务器缓存(例如,Azure缓存预览)。因此,每次发出请求时,Web服务器都必须重新绑定导致CPU峰值的请求。未来版本的Microsoft.AspNet.Web.Optimization应该再次启用服务器缓存。

这是CodePlex上的issue

+0

感谢您的评论账单。它看起来好像他们已经发布了此修复程序。你有没有想出一个替代解决方案? – Christo

+0

没有其他选择。我正在耐心等待更新。 –

+0

这个问题似乎在CodePlex上关闭 –