RedisConnectionException: не удалось подключиться к серверу Redis;ConnectTimeout - PullRequest
0 голосов
/ 22 октября 2018

Я видел различные вопросы об этой ошибке, но не смог найти какое-либо соответствующее решение.

Я использую stackexchange.redis.strongname версия сборки 1.2.6.0 для подключения к серверу redis версии 3.2.10 и случайному обращению к этому исключению RedisConnectionException.Наша архитектура представляет собой архитектуру веб-фермы, размещенную на AWS, и иногда одна машина не может подключиться к серверу Redis, но другая работает нормально.Так что это дает нам гарантию, что сервер Redis работает и работает нормально.Также мы попытались подключиться с помощью redis-cli.exe, когда одна машина не может подключиться, и она работает без проблем.

Я делюсь полным исключением ниже:

[RedisConnectionException: It was not possible to connect to the redis server(s); ConnectTimeout]

    [RedisConnectionException: No connection is available to service this operation: EVAL; It was not possible to connect to the redis server(s); ConnectTimeout; IOCP: (Busy=0,Free=1000,Min=2,Max=1000), WORKER: (Busy=767,Free=32000,Min=2,Max=32767), Local-CPU: n/a]
       StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl(Message message, ResultProcessor`1 processor, ServerEndPoint server) +4657
       StackExchange.Redis.RedisBase.ExecuteSync(Message message, ResultProcessor`1 processor, ServerEndPoint server) +122
       StackExchange.Redis.RedisDatabase.ScriptEvaluate(String script, RedisKey[] keys, RedisValue[] values, CommandFlags flags) +142
       Microsoft.Web.Redis.<>c__DisplayClass4.<Eval>b__3() +56
       Microsoft.Web.Redis.StackExchangeClientConnection.RetryForScriptNotFound(Func`1 redisOperation) +135
       Microsoft.Web.Redis.StackExchangeClientConnection.RetryLogic(Func`1 redisOperation) +144
       Microsoft.Web.Redis.StackExchangeClientConnection.Eval(String script, String[] keyArgs, Object[] valueArgs) +542
       Microsoft.Web.Redis.RedisConnectionWrapper.TryTakeWriteLockAndGetData(DateTime lockTime, Int32 lockTimeout, Object& lockId, ISessionStateItemCollection& data, Int32& sessionTimeout) +262
       Microsoft.Web.Redis.RedisSessionStateProvider.GetItemFromSessionStore(Boolean isWriteLockRequired, HttpContext context, String id, Boolean& locked, TimeSpan& lockAge, Object& lockId, SessionStateActions& actions) +1160
       Microsoft.Web.Redis.RedisSessionStateProvider.GetItemExclusive(HttpContext context, String id, Boolean& locked, TimeSpan& lockAge, Object& lockId, SessionStateActions& actions) +211
       System.Web.SessionState.SessionStateModule.GetSessionStateItem() +176
       System.Web.SessionState.SessionStateModule.BeginAcquireState(Object source, EventArgs e, AsyncCallback cb, Object extraData) +1018
       System.Web.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +710
       System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +634

Вот код, который я использую для создания подключения к серверу redis

var configOptions = new StackExchange.Redis.ConfigurationOptions
{
   ConnectTimeout = 5000,
   ConnectRetry = 5,
   SyncTimeout = 5000,
   AbortOnConnectFail = false,
};

configOptions.EndPoints.Add(host, port);

var conn = StackExchange.Redis.ConnectionMultiplexer.Connect(configOptions);
return conn;

Может ли кто-нибудь помочь мне выяснить причину этой проблемы или некоторые шаги по ее устранению, также очень помог бы.

...