Redis与StackExchange.Redis客户端随机超时

时间:2016-07-21 19:16:37

标签: .net azure redis stackexchange.redis

我使用在开发过程中使用的MSOpenTech构建在我的Windows 10机器上安装了Redis的本地副本。我试图模拟我们从Azure Redis实例中偶尔出现的超时。我得到的一个示例错误是:

  

附加信息:超时执行GET 9f1cbfc9-07c3-4209-a7c4-07034d550766,inst:0,mgr:ExecuteSelect,err:never,queue:0,qu:0,qs:0,qc:0,wr:0 ,wq:0,in:0,ar:0,clientName:deployment29(504).API_IN_0,IOCP :( Busy = 1,Free = 999,Min = 8,Max = 1000),WORKER :( Busy = 4,Free = 32763,Min = 8,Max = 32767),Local-CPU:100%(请查看本文以了解可能导致超时的一些常见客户端问题:https://github.com/StackExchange/StackExchange.Redis/tree/master/Docs/Timeouts.md

我与Redis的关系如下:

    private static readonly Lazy<ConnectionMultiplexer> LazyConnection = new Lazy<ConnectionMultiplexer>(() =>
    {
        var redisConfig = ConfigurationOptions.Parse(Resources.GetValueFromConfig(REDIS_CACHE_CONN_STRING));
        redisConfig.SyncTimeout = 3000;

        return ConnectionMultiplexer.Connect(redisConfig);
    });

    // As per Microsoft (http://msdn.microsoft.com/en-us/library/windowsazure/jj131262), I am
    // initializing this once and reusing it.
    private static ConnectionMultiplexer _dataCacheFactory
    {
        get
        {
            return LazyConnection.Value;
        }
    }

我的连接字符串如下所示,用于连接Azure:

<add key="RedisCacheConnString" value="xxxx.windows.net:xxxx,password=xxxxxxx=,ssl=True,abortConnect=False"/>

这是连接到本地MSOpenTech实例的时候:

<add key="RedisCacheConnString" value="localhost:6379,abortConnect=False"/>

此外,我已将50的minLoThreads添加到app.config。

在进行INFO cpu时,似乎并不是任何处理器密集型请求。这也证实,在我们的Azure Redis实例上,似乎没有任何负面的性能指标。

# CPU
used_cpu_sys:12.36
used_cpu_user:1.17
used_cpu_sys_children:0.00
used_cpu_user_children:0.00

我应该注意到,有一个非常繁琐的前端可以同时发出多达10个ajax请求 - 几乎所有这些请求都是redis,我怀疑这可能是一个问题。我想深究为什么会发生超时。

0 个答案:

没有答案