zoukankan      html  css  js  c++  java
  • Redis查询超时问题排查及原因分析

    在操作Redis时要时刻记得Redis是单线程操作,如果有耗时的操作,会阻塞其他的操作。

    上周四晚上开始钉钉群里Redis开始报警,不是很多,一晚上报了有个几十条。数据(非大Key)写入Redis失败了。周五开始排查问题。个人认为周五上线和周五出BUG是最不爽的~

     开发平台是.net , 使用的是StackExchange.Redis来操作Redis。

    在服务器上调用API返回错误信息如下:

    "ExceptionMessage":"Timeout performing。。。感觉这个错误信息和OOM时显示的信息一样,显示的错误位置和实际的错误位置根本没有关系。还好里面还显示了一个地址:https://stackexchange.github.io/StackExchange.Redis/Timeouts。里面详细介绍了可能会导致Redis操作超时的原因,这样就可以排查问题的具体点了。导致超时的原因是:List中的数据量到了几十万,在删除时耗时比较久。阻塞了其他的操作。

     比较快的方法是通过Redis的slowlog命令来查看那个操作耗时较高。https://redis.io/commands/slowlog

    redis> SLOWLOG GET
    1) 1) (integer) 12                      # 唯一性(unique)的日志标识符
       2) (integer) 1324097834              # 被记录命令的执行时间点,以 UNIX 时间戳格式表示
       3) (integer) 16                      # 查询执行时间,以微秒为单位
       4) 1) "CONFIG"                       # 执行的命令,以数组的形式排列
          2) "GET"                          # 这里完整的命令是 CONFIG GET slowlog-log-slower-than
          3) "slowlog-log-slower-than"
  • 相关阅读:
    动态页面技术(JSP/EL/JSTL)
    JavaWeb核心之Servlet
    会话技术Cookie&Session
    待整理
    二进制中1的个数(python)
    矩形覆盖(python)
    变态跳台阶(python)
    跳台阶(python)
    斐波那契数列(python)
    旋转数组的最小数字(python/c++)
  • 原文地址:https://www.cnblogs.com/andy-2014/p/11882367.html
Copyright © 2011-2022 走看看