Я видел различные вопросы об этой ошибке, но не смог найти какое-либо соответствующее решение.
Я использую 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;
Может ли кто-нибудь помочь мне выяснить причину этой проблемы или некоторые шаги по ее устранению, также очень помог бы.