• Redis阻塞诊断基础


    slowlog Redis慢查询

    slowlog 参数
    slowlog-log-slower-than: 慢查询时间阈值,超过这个阈值的查询将会被记录,默认值10000,但是微妙,也即10毫秒。
    slowlog-max-len:慢查询日志最大条数,默认值128,先进先出的队列的形式记录在内存中。
     
    slowlog 内容查看
    slowlog len查看slowlog的条数
    slowlog get {n} 插入slowlog详细内容

    日志内容说明:

     9) 1) (integer) 3              慢日志标识Id
         2) (integer) 1540187867         执行日志命令的unix时间戳。
         3) (integer) 6654             命令执行时间,单位为微妙
         4) 1) "scan"                执行的Redis命令
            2) "125336"
            3) "MATCH"
            4) "*"
            5) "COUNT"
            6) "10000"
        5) "***.***.***.***:35096"         客户端Ip以及端口号(Redis 4.0以后新增的)
        6) "slowlog_connection"           客户端名称(通过client setname 设置的名称)
     

    大对象查询

      redis-cli -h -p -a --bigkeys

      

    Redis 负载查询

      redis-cli -h -p -a --stat,以1秒为频率,输出Redis的负载信息

    该命令输出Redis负载情况,
    keys Redis中对象的个数
    clients 客户端个数
    blocked 阻塞个数
    requests 接受到的请求数累加(新增数)
    connection 连接数

      

     Redis命令统计信息

      redis-cli -h -p -a  info commandstats 查询Redis各类命令的开销统计信息。

      

      

    持久化阻塞

      Fork持久化阻塞

      对于RDB或者AOF持久化,是通过fork进程完成的,fork线程持久化时耗时过长,会阻塞Redis主线程,
      用redis-cli -h -p -a info stats 查看fork阻塞,latest_fork_usec表示最近一次持久化产生的阻塞

      

      AOF持久化阻塞

    AOF持久化会每秒执行一次刷盘操作,fsync刷盘会一直等待到数据写盘完成,如果磁盘繁忙或者磁盘本身性能造成的IO压力,
    如果主线程发现距上一次fync成功超过2s,为了安全性(数据写盘),会产生(写)阻塞,直到fsync刷盘完成。
    这种情况会将往Redis日志文件中写入异常日志。

  • 相关阅读:
    android:taskAffinity与android:finishOnTaskLaunch之我见
    Android 实现两屏幕互相滑动
    Android: 如何打开assets or raw文件夹下的数据库文件
    Android自定义进度条
    a标签在ie6下点了没反应
    strtotime 稍有不同
    php遍历时修改 传地址
    css3pie
    js 数据拷贝
    不重启iis的情况下切换iis的.net版本
  • 原文地址:https://www.cnblogs.com/wy123/p/9829919.html
Copyright © 2020-2023  润新知