欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Redis阻塞诊断基础

程序员文章站 2022-08-17 17:07:57
slowlog Redis慢查询 slowlog 参数 slowlog-log-slower-than: 慢查询时间阈值,超过这个阈值的查询将会被记录,默认值10000,但是微妙,也即10毫秒。 slowlog-max-len:慢查询日志最大条数,默认值128,先进先出的队列的形式记录在内存中。 s ......

 

slowlog redis慢查询

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

日志内容说明:

 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 负载查询

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

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

  Redis阻塞诊断基础

 redis命令统计信息

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

  Redis阻塞诊断基础

  

持久化阻塞

  fork持久化阻塞

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

  Redis阻塞诊断基础

  aof持久化阻塞

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