【问题标题】:Error: Timeout performing GET using Redis错误:使用 Redis 执行 GET 超时
【发布时间】:2018-01-09 17:28:50
【问题描述】:

我在 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:(忙=0,空闲=1000,最小=2,最大=1000),工人:(忙=0,空闲=4095,最小=2,最大=4095),客户端名称:WIN-XYZ”

谁能解释一下这些值的含义:忙碌、空闲、最小和最大?

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

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

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

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

执行 PSETEX 超时,inst: 1, mgr: ExecuteSelect, err: 从不,队列:2,qu:0,qs:2,qc:0,wr:1,wq:1,in:0,ar:0, IOCP:(忙=0,空闲=1000,最小=2,最大=1000),工人: (忙=0,空闲=8191,最小=2,最大=8191),客户端名称: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, err: never, 队列:0,qu:0,qs:0,qc:0,wr:0,wq:0,in:0,ar:0,IOCP: (忙=0,空闲=1000,最小=2,最大=1000),工人: (忙=2,空闲=4093,最小=2,最大=4095),客户端名称:WIN-XYZ

【问题讨论】:

  • in:8596 表示输入中有数据。很难知道为什么它没有被处理。
  • 试试connection.PreserveAsyncOrder = false; 可能是死锁问题

标签: c# .net redis stackexchange.redis


【解决方案1】:

在我的情况下,我重新启动了服务器并且它工作了,问题是服务器 CPU 是 100%,当用户试图从 redis 获取凭据时,它无法访问,所以...... TIMEOUT 并踢出从带有漂亮错误消息的会话中。小心你的进程,也许其中一个正在杀死 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)

【讨论】:

    猜你喜欢
    • 2015-06-16
    • 2020-04-28
    • 1970-01-01
    • 2017-05-15
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 2019-03-10
    相关资源
    最近更新 更多