【问题标题】:Timeout performing SCAN执行 SCAN 超时
【发布时间】:2014-12-25 10:52:09
【问题描述】:

获取“执行扫描超时,inst:0,mgr:ExecuteSelect,队列:1,qu=1,qs=0,qc=0,wr=0/1,in=0/0”,同时要求打开按键redis

不知道为什么会这样?

public void DeleteKeys(string pattern)
{
    try
    {
        EndPoint[] endPoints = m_connectionMultiplexer.GetEndPoints();
        foreach (EndPoint endPoint in endPoints)
        {
            IServer server = m_connectionMultiplexer.GetServer(endPoint);
            RedisValue redisValue = pattern;
            IEnumerable<RedisKey> redisKeys = server.Keys(0, redisValue);
            foreach (RedisKey redisKey in redisKeys)
            {
                m_connectionMultiplexer.GetDatabase().KeyDelete(redisKey);
            }  
        }

    }
    catch (Exception ex)
    {
        m_logger.Exception(ex);
    }
}

【问题讨论】:

  • 我收到了完全相同的消息'Timeout performing SCAN, inst: 1, mgr: ExecuteSelect, queue: 7, qu=0, qs=7, qc=0, wr=0/0, in=0/0'
  • @Vitalik,好像 Marc 在上面。我现在做 FlushAll,因为我的用例是项目重新初始化,而不是删除特定的键模式。
  • 不确定这是否重要,但今天的数字发生了变化:'Timeout performing SCAN, inst: 1, mgr: ExecuteSelect, queue: 15, qu=0, qs=15, qc=0, wr=0/0, in=0/0'

标签: redis stackexchange.redis


【解决方案1】:

状态标志的特定组合告诉我一个命令(特别是:scan)卡在未发送队列中,虽然它知道需要一个写入器,但没有写入器处于活动状态。你有完整的复制品吗?这可能最好作为一个错误提出。

【讨论】:

  • 老是这样,怎么收集bug日志?
  • @eugene 好吧,您发布的内容已经相当有用,因为我可以将其范围缩小到作家激活。比如说,如果你有一个可靠地重现它的控制台 exe,那就太棒了。然而,这不是我见过的。你在使用 vLatest 吗?
  • 我一直在使用 Win redis 端口 2.8.12 最新的 1.0.333,尽管 dll 以某种方式显示为 1.0.316.0 可能是 1.0.333 nuget 的错误包?如果您没有找到问题,我可以给您邮寄一些基本的解决方案,但您没有收到我的最后一封邮件(可能是因为一些垃圾邮件过滤器)
猜你喜欢
  • 1970-01-01
  • 2010-09-16
  • 2012-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-22
相关资源
最近更新 更多