【问题标题】:Azure Cache (Preview) OutputCache - High CPU - SlowAzure 缓存(预览版)OutputCache - 高 CPU - 慢
【发布时间】:2012-11-15 06:59:15
【问题描述】:

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

我已将问题缩小到 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>

【问题讨论】:

  • 我也在评估 Azure 缓存,即使我只是考虑了专用角色选项。当您调试它时,我假设您在 Development Fabric 上本地运行解决方案,对吗?您是否运行 Web 角色的多个实例并在实例之间配置了高可用性(备份副本 = 1)?
  • 您是否将缓存用于其他用途?我很想知道您的 Web.Config 文件中的 dataCacheClients 配置以及 WebRole 属性页面的“缓存”选项卡上的缓存设置。
  • 我已经格式化了我的机器,安装了 VS 2012 并重新安装了 Azure SDK,重新下载了我的 NuGet 包,但问题仍然存在。每当我为每个 Web 请求打开 outputCache 提供程序时,都会出现大量 CPU 峰值。
  • 根据要求,这里是 dataCacheClients 部分:
    @DavideB 我在 Web 服务器之间运行具有 30% 缓存大小的同位角色。问题是在开发结构上进行本地调试时。

标签: azure


【解决方案1】:

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

这是 CodePlex 上的issue

【讨论】:

  • 感谢您的评论账单。看起来他们还没有发布此修复程序。你有没有想出替代解决方案?
  • CodePlex 上的问题似乎已解决
猜你喜欢
  • 1970-01-01
  • 2012-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-01
  • 1970-01-01
相关资源
最近更新 更多