Using Azure Cache for Redis (C2 instance), with minimal users in QA for user session state in an ASP.NET MVC application on .NET 4.8.
We see this in AppInsights and it affects our regression tests and blocks deployment of the application:
Timeout performing EVAL (5000ms), inst: 10, qs: 9, in: 0, serverEndpoint: Unspecified/eiqlegacy-redis-int.redis.cache.windows.net:6380, mgr: 10 of 10 available, clientName: pd1ldwk000B8B, IOCP: (Busy=0,Free=1000,Min=4,Max=1000), WORKER: (Busy=9,Free=32758,Min=4,Max=32767), v: 2.0.519.65453 (Please take a look at this article for some common client-side issues that can cause timeouts: https://stackexchange.github.io/StackExchange.Redis/Timeouts)
Are there any additional settings we should implement?
Web.config for app, as it pertains to session:
<sessionState cookieless="UseCookies" customProvider="RedisSessionStateStore"
mode="Custom" timeout="60">
<providers>
<add name="RedisSessionStateStore"
type="Microsoft.Web.Redis.RedisSessionStateProvider"
applicationName="EIQ_Session"
settingsClassName="EIQ.Web.RedisSettings, EnsembleHP.EIQ.Web"
settingsMethodName="ConnectionString" ssl="true"
redisSerializerType="EIQ.Web.RedisSerializer, EIQ.Web" />
</providers>
</sessionState>
Call stack:
StackExchange.Redis.RedisTimeoutException:
at StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl (StackExchange.Redis, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c219ff1ca8c2ce46: C:\projects\stackexchange-redis\src\StackExchange.Redis\ConnectionMultiplexer.cs:2197)
at StackExchange.Redis.RedisBase.ExecuteSync (StackExchange.Redis, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c219ff1ca8c2ce46: C:\projects\stackexchange-redis\src\StackExchange.Redis\RedisBase.cs:54)
at StackExchange.Redis.RedisDatabase.ScriptEvaluate (StackExchange.Redis, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c219ff1ca8c2ce46: C:\projects\stackexchange-redis\src\StackExchange.Redis\RedisDatabase.cs:1134)
at Microsoft.Web.Redis.StackExchangeClientConnection+<>c__DisplayClass7_0.<Eval>b__0 (Microsoft.Web.RedisSessionStateProvider, Version=4.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35: C:\TeamCity\buildAgent\work\59b31e8e4035fd30\src\Shared\StackExchangeClientConnection.cs:68)
at Microsoft.Web.Redis.StackExchangeClientConnection.OperationExecutor (Microsoft.Web.RedisSessionStateProvider, Version=4.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35: C:\TeamCity\buildAgent\work\59b31e8e4035fd30\src\Shared\StackExchangeClientConnection.cs:95)
at Microsoft.Web.Redis.StackExchangeClientConnection.RetryLogic (Microsoft.Web.RedisSessionStateProvider, Version=4.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35: C:\TeamCity\buildAgent\work\59b31e8e4035fd30\src\Shared\StackExchangeClientConnection.cs:122)
at Microsoft.Web.Redis.StackExchangeClientConnection.Eval (Microsoft.Web.RedisSessionStateProvider, Version=4.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35: C:\TeamCity\buildAgent\work\59b31e8e4035fd30\src\Shared\StackExchangeClientConnection.cs:68)
at Microsoft.Web.Redis.RedisConnectionWrapper.TryTakeWriteLockAndGetData (Microsoft.Web.RedisSessionStateProvider, Version=4.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35: C:\TeamCity\buildAgent\work\59b31e8e4035fd30\src\RedisSessionStateProvider\RedisConnectionWrapper.cs:184)
at Microsoft.Web.Redis.RedisSessionStateProvider.GetItemFromSessionStore (Microsoft.Web.RedisSessionStateProvider, Version=4.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35: C:\TeamCity\buildAgent\work\59b31e8e4035fd30\src\RedisSessionStateProvider\RedisSessionStateProvider.cs:293)
at Microsoft.Web.Redis.RedisSessionStateProvider+<GetItemExclusiveAsync>d__20.MoveNext (Microsoft.Web.RedisSessionStateProvider, Version=4.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35: C:\TeamCity\buildAgent\work\59b31e8e4035fd30\src\RedisSessionStateProvider\RedisSessionStateProvider.cs:206)
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)
at Microsoft.AspNet.SessionState.SessionStateModuleAsync+<GetSessionStateItemAsync>d__74.MoveNext (Microsoft.AspNet.SessionState.SessionStateModule, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35)
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)
at Microsoft.AspNet.SessionState.SessionStateModuleAsync+<AcquireStateAsync>d__65.MoveNext (Microsoft.AspNet.SessionState.SessionStateModule, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35)
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)
at Microsoft.AspNet.SessionState.TaskAsyncHelper.EndTask (Microsoft.AspNet.SessionState.SessionStateModule, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35)
at System.Web.HttpApplication+AsyncEventExecutionStep+<>c__DisplayClass11_0.<InvokeEndHandler>b__0 (System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
at System.Web.HttpApplication+AsyncEventExecutionStep.InvokeEndHandler (System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
at System.Web.HttpApplication+AsyncEventExecutionStep.OnAsyncEventCompletion (System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)