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"
  • 相关阅读:
    CPU
    CentOS7 Tomcat 环境部署
    CentOS7 NTP 安装配置
    CISCO VLAN ACL
    ESXI6.0启用 snmp
    编译安装 varnish-4.1.2和yum 安装 varnish-4.0.3
    CentOS7 安装中文帮助手册
    CentOS7 学习笔记
    CentOS7 编译安装 nginx-1.10.0
    CentOS7 cacti 安装
  • 原文地址:https://www.cnblogs.com/andy-2014/p/11882367.html
Copyright © 2011-2022 走看看