【问题标题】:Timeout performing EXISTS [keyname], inst: 2, mgr: ExecuteSelect, queue: 0, qu=0, qs=0, qc=0, wr=0/0, in=0/0超时执行 EXISTS [keyname], inst: 2, mgr: ExecuteSelect, queue: 0, qu=0, qs=0, qc=0, wr=0/0, in=0/0
【发布时间】:2015-07-28 19:24:01
【问题描述】:

我在 C# Windows 应用程序中使用 StackExchange.Redis 版本 1.0.0.0。此应用程序是多线程的,我们将一些值保存在 Redis 缓存中。 当我需要一个键的值时,首先我通过EXISTS 命令检查该键的存在。

有时会发生异常:

超时执行 EXISTS SpeedLimit_GF__VU_3, inst: 2, mgr: ExecuteSelect,队列:0,qu=0,qs=0,qc=0,wr=0/0,in=0/0, IOCP:(忙=0,空闲=1000,最小=8,最大=1000), 工人:(忙=1,空闲=1022,最小=8,最大=1023) 在 StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl[T](消息 消息、ResultProcessor1 处理器、ServerEndPoint 服务器) 在 StackExchange.Redis.RedisBase.ExecuteSync[T](消息消息,ResultProcessor1 处理器,ServerEndPoint 服务器) 在 StackExchange.Redis.RedisDatabase.KeyExists(RedisKey 键,CommandFlags 标志) . . .

缓存服务器和应用服务器是一样的。可能是什么原因以及如何解决这个问题?

【问题讨论】:

    标签: c# multithreading exists stackexchange.redis timeoutexception


    【解决方案1】:

    那个错误信息告诉我当时客户端没有做任何有趣的事情,所以问题变成了:服务器在做什么? slowlog get 有什么与这次有关的吗?服务器日志有什么东西吗?特别是,我的第一个想法是:

    1. 此时服务器是否持续存在(aof rewrite 或 rdb)?
    2. 是否有长时间运行的操作阻塞了服务器(例如keys *,您不应该使用它)
    3. 是否与主/从建立复制?
    4. 是否存在网络故障?

    【讨论】:

    • 谢谢你,马克。让我再检查一遍,用 Slowlog get 等命令监控 Redis。我将在这里分享结果。
    • 嗨,Javed,有什么更新吗?我得到相同参数值的相同异常:queue: 0, qu: 0, qs: 0, qc: 0, wr: 0, wq: 0, in: 0, ar: 0
    • 你好。我们更改了服务器并将其升级为更强大的硬件(不仅仅是因为 redis,对于所有其他服务)。所以我们不会再得到这个错误。我想这是关于资源的。不幸的是,我没有深入研究 redis。
    猜你喜欢
    • 2014-12-30
    • 2012-10-23
    • 2013-07-15
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    相关资源
    最近更新 更多