StackExchange.Redis的timeout问题

最近在使用StackExchange.Redis的时候,经常出现一个BUG

Timeout performing SET XXX, inst: 27, mgr: ProcessReadQueue, err: never, queue: 3, qu: 0, qs: 3, qc: 0, wr: 0, wq: 0, in: 15, ar: 1, clientName: XXX, serverEndpoint: 192.168.x.x:6379, keyHashSlot: 944, IOCP: (Busy=0,Free=1000,Min=4,Max=1000), WORKER: (Busy=4,Free=4091,Min=4,Max=4095) (Please take a look at this article for some common client-side issues that can cause timeouts: http://stackexchange.github.io/StackExchange.Redis/Timeouts)

通过将近一天的查资料和测试,最终得到一个解决办法。

Redis数据库连接的时候把SyncTimeout同步过期时间从默认1秒改成5秒,

连接过期时间从默认5秒改成15秒,响应过期时间改成15秒。其中AbortOnConnectFail在测试时候设不设成false影响不大。

var config = new ConfigurationOptions
            {
                AbortOnConnectFail = false,
                AllowAdmin = true,
                ConnectTimeout = 15000,
                SyncTimeout = 5000,
                ResponseTimeout = 15000,
                Password = "Pwd",//Redis数据库密码
                EndPoints = { connectionString }// connectionString 为IP:Port 如”192.168.2.110:6379”
            };
            var connect = ConnectionMultiplexer.Connect(config);
使用LoadRunner在500用户负载测试下,同时进行db.StringSet(key, value)的操作,进行多次测试,共添加200万个Key,没有再报timeout的异常。

总结:使用StackExchange.Redis时候,建议写成单例创建Redis连接的模式,我测试过程中,没写成单例,在负载测试中报错了。由于目前还在使用.NET,所以.NET Core没有进行验证,有空再用笔记本测试下。

 

服务器配置:

处理器:Intel(R) Core(TM) i7-4790K CPU @ 4.00GHZ    4.00GHZ

内存:32G

系统类型:64位

 

Redis版本:Redis-x64-3.2.100

 

StackExchange.Redis版本:1.2.6.0

 

.NET版本:.NET Framework 4.6

 

转载请标明原文链接:https://mp.csdn.net/postedit/84069184
--------------------- 
作者:烟花易冷人憔悴 
来源:CSDN 
原文:https://blog.csdn.net/qq_35633131/article/details/84069184 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值