#StackBounty: #azure #redis #timeout #stackexchange.redis StackExchange.Redis timeout

Bounty: 500

Production environment is on Azure, using Redis Cache Standard 2.5GB.

Example 1

System.Web.HttpUnhandledException (0x80004005): Exception of type
‘System.Web.HttpUnhandledException’ was thrown. —>
StackExchange.Redis.RedisTimeoutException: Timeout performing SETNX
User.313123, inst: 49, mgr: Inactive, err: never, queue: 0, qu: 0, qs:
0, qc: 0, wr: 0, wq: 0, in: 0, ar: 0, clientName: PRD-VM-WEB-2,
serverEndpoint: Unspecified/Construct3.redis.cache.windows.net:6380,
keyHashSlot: 15649, IOCP: (Busy=0,Free=1000,Min=1,Max=1000), WORKER:
(Busy=1,Free=32766,Min=1,Max=32767) (Please take a look at this
article for some common client-side issues that can cause timeouts:
http://stackexchange.github.io/StackExchange.Redis/Timeouts) at
StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl[T](Message
message, ResultProcessor1 processor, ServerEndPoint server) in
c:codeStackExchange.RedisStackExchange.RedisStackExchangeRedisConnectionMultiplexer.cs:line
2120 at StackExchange.Redis.RedisBase.ExecuteSync[T](Message message,
ResultProcessor
1 processor, ServerEndPoint server) in
c:codeStackExchange.RedisStackExchange.RedisStackExchangeRedisRedisBase.cs:line
81

Example 2

StackExchange.Redis.RedisTimeoutException: Timeout performing GET
ForumTopic.33831, inst: 1, mgr: Inactive, err: never, queue: 2, qu: 0,
qs: 2, qc: 0, wr: 0, wq: 0, in: 0, ar: 0, clientName: PRD-VM-WEB-2,
serverEndpoint: Unspecified/Construct3.redis.cache.windows.net:6380,
keyHashSlot: 5851, IOCP: (Busy=0,Free=1000,Min=1,Max=1000), WORKER:
(Busy=1,Free=32766,Min=1,Max=32767) (Please take a look at this
article for some common client-side issues that can cause timeouts:
http://stackexchange.github.io/StackExchange.Redis/Timeouts) at
StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl[T](Message
message, ResultProcessor1 processor, ServerEndPoint server) in
c:codeStackExchange.RedisStackExchange.RedisStackExchangeRedisConnectionMultiplexer.cs:line
2120 at StackExchange.Redis.RedisBase.ExecuteSync[T](Message
message, ResultProcessor
1 processor, ServerEndPoint server) in
c:codeStackExchange.RedisStackExchange.RedisStackExchangeRedisRedisBase.cs:line
81 at StackExchange.Redis.RedisDatabase.StringGet(RedisKey key,
CommandFlags flags) in
c:codeStackExchange.RedisStackExchange.RedisStackExchangeRedisRedisDatabase.cs:line
1647 at
C3.Code.Controls.Application.Caching.Distributed.DistributedCacheController.Get[T](String
cacheKey) in
C:Construct.netSourceC3Alpha2CodeControlsApplicationCachingDistributedDistributedCacheController.cs:line
115 at
C3.Code.Controls.Application.Caching.Manager.Manager.Get[T](String
key, Func`1 getFromExternFunction, Boolean skipLocalCaches) in
C:Construct.netSourceC3Alpha2CodeControlsApplicationCachingManagerManager.cs:line
159 at C3.PageControls.Forums.TopicRender.Page_Load(Object sender,
EventArgs e) in
C:Construct.netSourceC3Alpha2PageControlsForumsTopicRender.ascx.cs:line
40 at System.Web.UI.Control.OnLoad(EventArgs e) at
System.Web.UI.Control.LoadRecursive() at
System.Web.UI.Control.LoadRecursive() at
System.Web.UI.Control.LoadRecursive() at
System.Web.UI.Control.LoadRecursive() at
System.Web.UI.Control.LoadRecursive() at
System.Web.UI.Control.LoadRecursive() at
System.Web.UI.Control.LoadRecursive() at
System.Web.UI.Page.ProcessRequestMain(Boolean
includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

These errors are sporadic, several times a day.

Is this an Azure network blip, or something I can reduce? Looking at the numbers in the error doesn’t seem anything out of the ordinary, and the server load never seems to go above 7% as reported by Azure.

Redis connection

internal static class RedisController
{
    private static readonly object GetConnectionLock = new object();
    public static ConnectionMultiplexer GetConnection()
    {
        if (Global.RedisConnection == null)
        {
            lock (GetConnectionLock)
            {
                if (Global.RedisConnection == null)
                {
                    Global.RedisConnection = ConnectionMultiplexer.Connect(
                        Settings.Deployment.RedisConnectionString);
                }
            }
        }
        return Global.RedisConnection;
    }


Get this bounty!!!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.