簡體   English   中英

Redis和Siglnar偶爾在EVAL上掛起SocketFailure

[英]Redis and Siglnar Occasional Hangs SocketFailure on EVAL

我們正在使用Redis:2.8.2400和SignalR 2.2.0

我們在日志中看到偶爾有掛起。

StackExchange.Redis.RedisConnectionException: SocketFailure on EVAL
 at Microsoft.AspNet.SignalR.Messaging.ScaleoutStream.Send(Func`2 send, Object state)
 at Microsoft.AspNet.SignalR.Infrastructure.Connection.Send(ConnectionMessage message)
 at Microsoft.AspNet.SignalR.Hubs.HubDispatcher.Outgoing(IHubOutgoingInvokerContext context)
 at Microsoft.AspNet.SignalR.Hubs.HubPipelineModule.<>c__DisplayClass1b.<BuildOutgoing>b__19(IHubOutgoingInvokerContext context)
 at Microsoft.AspNet.SignalR.Hubs.SignalProxy.TryInvokeMember(InvokeMemberBinder binder, Object[] args, Object& result)
 at CallSite.Target(Closure , CallSite , Object , List`1 )
 at SR.BusPortal.WebApi.Hubs.SearchHub.<>c__DisplayClass8_0.<SearchInternal>b__0(List`1 x) in D:\Continua\Agent\Ws\37347\Source\WEB\src\SR.BusPortal.WebApi\SR.BusPortal.WebApi\Hubs\SearchHub.cs:line 141
 at SR.BusPortal.Providers.Faciliators.SearchExecutioner.PrepareResultsAsync(IEnumerable`1 connections, Boolean deliverVerifications, Func`2 callback) in D:\Continua\Agent\Ws\37347\Source\WEB\src\SR.BusPortal.WebApi\SR.BusPortal.Providers\Faciliators\SearchExecutioner.cs:line 120
 at SR.BusPortal.Providers.Faciliators.SearchExecutioner.<>c__DisplayClass32_0.<SearchAsync>b__0(List`1 x) in D:\Continua\Agent\Ws\37347\Source\WEB\src\SR.BusPortal.WebApi\SR.BusPortal.Providers\Faciliators\SearchExecutioner.cs:line 216

 StackExchange.Redis.RedisConnectionException: SocketFailure on EVAL
  at Microsoft.AspNet.SignalR.Messaging.ScaleoutStream.Send(Func`2 send, Object state)
  at Microsoft.AspNet.SignalR.Infrastructure.Connection.Send(ConnectionMessage message)

我可以減少它,使其在以下特定代碼行上大多失敗:

 Clients.Caller.SearchResults(connectionModels);

主要是將數據返回給客戶端。

現在,我正在考慮是否可以在這種情況下捕獲特定異常並重試。 但是我不確定這是否會導致客戶端中出現重復結果?

關於錯誤本身或有關重試想法的任何建議?

我在Redis 2.8.2400上遇到了相同的問題,您可以嘗試將服務器更新到3.0.501

原因不是redis服務器。 我們使用Microsoft.AspNet.SignalR.Redis ,它使用內部1.0.316 StackExchange.Redis,但當前版本是1.0.488。

該問題僅在此StackExchange.Redis版本中發生,並且正如Redis For Windows的支持告訴我的那樣,由於客戶端連接不總是被釋放,它們過去曾遇到過類似的問題。

對於我們的緩存,我們使用ServiceSTack.Redis,即使signalR創建了錯誤,它們也能夠讀取和寫入redis。

在我們的例子中,我們只是使用粘性會話,以便我們可以刪除signalR的后平面。

另一種方法是使用另一個底板或等待信號R更新StackExchange.Redis版本

暫無
暫無

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

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