2012-09-01 61 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上關閉 –