我在使用StackExchange.Redis时遇到了超时的问题。我在stackoverflow上找到的所有东西我都试过了。
这就是我要得到的:Timeout performing GET XXX, inst: 4, mgr: ProcessReadQueue, err: never, queue: 9, qu: 0, qs: 9, qc: 0, wr: 0, wq: 0, in: 65536, ar: 1, IOCP: (Busy=0,Free=1000,Min=400,Max=1000), WORKER: (Busy=35,Free=32732,Min=400,Max=32767)
在我得到的几乎所有异常中,只有queue和qs在变化,并且它的值一直到11。
我使用的是nuget版本的1.0.488。应用程序托管在Windows Server 2012上的IIS 8.5上。在那台机器上,我们有32 50的RAM,它的使用率为30-50%。我已经将maxmemory设置为16gb,将maxheap设置为22 to。已禁用保存到磁盘。我只使用它作为会话存储。
Redis服务器(版本x64-2.8.2402)安装在同一台机器上。这是我拥有的redis-cli info的url。
这也是我得到的exception的一部分:
System.TimeoutException: Timeout performing GET Airports, inst: 1, mgr: ProcessReadQueue, err: never, queue: 4, qu: 0, qs: 4, qc: 0, wr: 0, wq: 0, in: 65536, ar: 1, IOCP: (Busy=0,Free=1000,Min=400,Max=1000), WORKER: (Busy=20,Free=32747,Min=400,Max=32767), clientName: OWNEROR-G875DJG at StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl[T](Message message, ResultProcessor`1 processor, ServerEndPoint server) in c:\TeamCity\buildAgent\work\3ae0647004edff78\StackExchange.Redis\StackExchange\Redis\ConnectionMultiplexer.cs:line 1927 at StackExchange.Redis.RedisBase.ExecuteSync[T](Message message, ResultProcessor`1 processor, ServerEndPoint server) in c:\TeamCity\buildAgent\work\3ae0647004edff78\StackExchange.Redis\StackExchange\Redis\RedisBase.cs:line 80 at StackExchange.Redis.RedisDatabase.StringGet(RedisKey key, CommandFlags flags) in c:\TeamCity\buildAgent\work\3ae0647004edff78\StackExchange.Redis\StackExchange\Redis\RedisDatabase.cs:line 1451 at Resvoyage.Services.RedisCacheProvider.GetValue[T](String key) in c:\Development\thomalex\resvoyage\Resvoyage.Services\RedisCacheProvider.cs:line 88 这就是我的连接字符串在<add key="LocalRedis" value="127.0.0.1:6379,connectTimeout=25000,allowAdmin=true,password=xxx" />中的样子。ConnectionTimeout是15000,我试着把它增加到25000
我还在IIS的machine.config中增加了minIoThread。下面是我放入<processModel autoConfig="true" minIoThreads="50" minWorkerThreads="50" maxWorkerThreads = "100" maxIoThreads = "100"/>的值
发布于 2016-11-10 16:50:28
阅读redis slowlog,看看在redis上是否有任何缓慢的查询。也许你正在使用key命令?Redis是单线程的,所以一个缓慢的查询可能会阻塞所有东西,而且由于客户端不会永远等待redis,你会遇到超时。
https://stackoverflow.com/questions/40364082
复制相似问题