错误:使用Redis

时间:2017-08-02 13:03:28

标签: c# .net redis stackexchange.redis

我在Redis缓存中有200,000多个用户的列表。

当我尝试使用StackExchange.Redis StringGet从Redis缓存中获取该列表时出现TimeOut错误:

  

“超时执行GET,inst:1,mgr:ExecuteSelect,err:never,queue:2,qu:0,qs:2,qc:0,wr:0,wq:0,in:8596,ar: 0,IOCP :( Busy = 0,Free = 1000,Min = 2,Max = 1000),WORKER :( Busy = 0,Free = 4095,Min = 2,Max = 4095),clientName:WIN-XYZ“

有人可以解释这些值表示什么:忙,免费,最小和最大?

我已经通过构造函数中的更大程度增加了超时:

redis = ConnectionMultiplexer.Connect(string.Format("{0},allowAdmin=true,connectTimeout=1500000,keepAlive=100", redisConfig));

但每次我获取用户列表时,我仍然会收到超时。

这不是GET的问题,只是在设置该列表时遇到问题:

  

超时执行PSETEX,inst:1,mgr:ExecuteSelect,错误:   never,queue:2,qu:0,qs:2,qc:0,wr:1,wq:1,in:0,ar:0,   IOCP :(忙碌= 0,自由= 1000,最小值= 2,最大值= 1000),工人:   (Busy = 0,Free = 8191,Min = 2,Max = 8191),clientName:WIN-XYZ

在:

db.StringSet(cacheKey, bytes, slidingExpiration);

我甚至试图提出这里提到的各种超时https://stackexchange.github.io/StackExchange.Redis/Configuration

                redis = ConnectionMultiplexer.Connect(string.Format("{0},allowAdmin=true,syncTimeout=600000,connectRetry=3,connectTimeout=600000,keepAlive=180", redisConfig));
                redis.PreserveAsyncOrder = false;

但我仍然收到以下错误:

  

超时执行GET,inst:0,mgr:ExecuteSelect,错误:从不,   queue:0,qu:0,qs:0,qc:0,wr:0,wq:0,in:0,ar:0,IOCP:   (Busy = 0,Free = 1000,Min = 2,Max = 1000),WORKER:   (Busy = 2,Free = 4093,Min = 2,Max = 4095),clientName:WIN-XYZ

1 个答案:

答案 0 :(得分:0)

在我的情况下,我重新启动了服务器并使其正常工作,问题是服务器CPU为100%,并且当用户尝试从redis获取凭据时无法访问,因此...超时并踢出从会话中收到一条漂亮的错误消息。请注意您的进程,也许其中之一正在杀死CPU,如果可以,我可以肯定,Redis会超时。

我的错误消息:

 Error Message: Timeout performing GET session_user@gmail.com, inst: 1, mgr: 
 Inactive, err: never, queue: 5, qu: 0, qs: 5, qc: 0, wr: 0, wq: 0, in: 990, ar: 0, 
 clientName: RD0003FXXXXF5D, serverEndpoint: 
 Unspecified/cr.redis.cache.windows.net:6380, keyHashSlot: 14356, IOCP: 
 (Busy=0,Free=1000,Min=2,Max=1000), WORKER: (Busy=10,Free=8181,Min=2,Max=8191) (Please take a look at this article for some common client-side issues that can cause 
 timeouts: http://stackexchange.github.io/StackExchange.Redis/Timeouts)