簡體   English   中英

存儲數據時Azure緩存異常

[英]Azure cache exception when storing data

當前,我在WCF應用程序中使用Azure緩存,將數據放入緩存時出現此異常:

Microsoft.ApplicationServer.Caching.DataCacheException:錯誤代碼<ERRCA0017>:SubStatus <ES0006>:存在臨時故障。 請稍后重試。 (一個或多個指定的緩存服務器不可用,這可能是由繁忙的網絡或服務器引起的。對於本地緩存群集,還請驗證以下條件。確保已為此客戶端帳戶授予安全權限,並檢查AppFabric允許通過所有緩存主機上的防火牆進行緩存服務。此外,服務器上的MaxBufferSize必須大於或等於從客戶端發送的序列化對象大小。)

這是內部的例外:

System.ServiceModel.CommunicationException:套接字連接已中止。 這可能是由於處理您的消息時出錯,遠程主機超出了接收超時或潛在的網絡資源問題引起的。 本地套接字超時為“ 00:00:30”。 ---> System.Net.Sockets.SocketException:現有連接被遠程主機在System.Net.Sockets.Socket.Send(Byte []緩沖區,Int32偏移量,Int32大小,SocketFlags socketFlags)處強制關閉。 ServiceModel.Channels.SocketConnection.Write(Byte []緩沖區,Int32偏移量,Int32大小,布爾立即數,TimeSpan超時)---內部異常堆棧跟蹤的結尾---在System.ServiceModel.Channels.SocketConnection.Write(Byte [ ]緩沖區,在System.ServiceModel.Channels.SocketConnection.Write(Int32偏移量,Int32偏移量,Int32大小,布爾立即數,TimeSpan超時,BufferManager bufferManager)在System.ServiceModel處.Channels.BufferedConnection.WriteNow(Byte []緩沖區,Int32偏移量,Int32大小,TimeSpan超時,BufferManager bufferManager)在System.ServiceModel.Channels.BufferedConnection.Write(Byte []緩沖區,Int32偏移量,Int32大小,布爾型立即數,TimeSpan超時,位於System.Serv的BufferManager bufferManager) Microsoft的System.ServiceModel.Channels.OutputChannel.Send(消息,TimeSpan超時)處的iceModel.Channels.FramingDuplexSessionChannel.OnSend(消息,TimeSpan超時),Microsoft處的Application.Caching.CacheResolverChannel.Send(消息,TimeSpan超時) .ApplicationServer.Caching.WcfClientChannel.SendOnChannel(EndpointID端點,TimeSpan&超時,WaitCallback回調,對象狀態,布爾異步,IDuplexSessionChannel通道,消息)---內部異常堆棧跟蹤的結尾---在Microsoft.ApplicationServer.Caching.DataCache Microsoft.ApplicationServer.Caching.DataCache.InternalPut中的.ThrowException(ResponseBody respBody)(Microsoft.ApplicationServer.Caching.DataCache.InternalPut(字符串鍵,對象值,DataCacheItemVersion oldVersion,TimeSpan超時,DataCacheTag []標簽) ,字符串區域,IMonitoringListener偵聽器),位於Microsoft.ApplicationServer.Caching.DataCache。<> c_ DisplayClass19.b _ Microsoft.ApplicationServer.Caching.DataCache.Put上的18()在Microsoft.ApplicationServer.Caching.MonitoringListenerFactory.EmptyListener.Microsoft.ApplicationServer.Caching.IMonitoringListener.Listen [TResult](Func`1 innerDelegate)(字符串鍵,對象值)

問題是此消息非常籠統,沒有提供太多詳細信息

我已經嘗試將dataCacheClient中的requestTimeout增加到2分鍾。 這不能解決問題,因此不應因為連接到緩存超時而導致

我知道這不是因為數據量太大,也不是因為生產服務器上的相同數據量沒有問題(這在測試服務器上發生)。 我從本地計算機連接到測試數據庫,也沒有問題

任何人有任何想法如何解決這個問題? 謝謝

以下是我當前的Azure緩存配置

<dataCacheClient name="default" requestTimeout="30000" isCompressionEnabled="true" >
  <localCache isEnabled="true" sync="TimeoutBased" objectCount="4194304" ttlValue="80000" />
</dataCacheClient>

請在代碼中的40-50秒之間設置ReceiveTimeout屬性 ,以避免套接字超時。

如果錯誤提示,請在代碼中包含重試邏輯以重試該操作。

如果此問題持續較長時間,請查看緩存實例性能計數器,以了解您是否已接近100%限制或在某種意義上已達到最大容量,在這種情況下,您應該重新評估容量,請參閱容量規划注意事項角色內緩存(Windows Azure緩存)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM