Redis阻塞诊断基础

本文详细介绍Redis慢查询配置与查看方法,包括slowlog参数调整、日志内容解析及大对象查询技巧。同时,探讨了Redis负载查询、命令统计信息获取及持久化阻塞现象,帮助读者深入理解Redis性能监控。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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日志文件中写入异常日志。

 

 

### Redis 基础管理操作 #### 连接与断开服务器 为了管理和操作 Redis 数据库,首先要连接到 Redis 服务。这可以通过 `redis-cli` 工具完成。 ```bash $ redis-cli -h hostname -p port_number [-a password] ``` 一旦完成了工作,则应关闭客户端会话: ```bash quit ``` #### 查看当前使用的数据库 Redis 默认提供多个逻辑分离的数据库实例,默认情况下使用的是编号为0的数据库。 ```bash SELECT db_index ``` 例如切换至第1号数据库可执行如下命令[^1]: ```bash select 1 ``` #### 获取服务器信息 获取有关 Redis 实例的信息对于监控和调试非常重要。可以使用 `INFO` 命令来查看统计信息和其他细节。 ```bash info [section] ``` 此命令返回关于内存消耗、持久化状态等多个方面的数据;还可以指定特定部分如 cpu 或 memory 来获得更聚焦的结果[^2]。 #### 设置键的有效期 有时希望某些缓存条目只存在一段时间之后自动消失。为此目的而设计的功能就是设置过期时间。 ```bash expire key seconds ``` 上述指令设定给定键将在多少秒后被删除。如果想要立即移除某个项则应该调用 `del` 方法[^3]。 #### 备份与恢复 Redis 支持两种主要方式来进行备份——RDB 快照文件以及 AOF 日志追加模式。前者会在一定条件下保存整个数据集的一个副本,后者则是持续记录所有的写入动作以便于精确重建。 要触发一次即时快照过程,可以用下面这条语句: ```bash save ``` 不过通常建议配置后台异步保存机制以减少阻塞风险(`bgsave`)。至于加载已有 RDB 文件回到内存中只需重启守护进程即可[^4]。 #### 清理所有键空间 当测试环境或者开发阶段可能需要快速清除全部现有数据而不必逐一手动删除各个实体时,有这样一个便捷的方法可用: ```bash flushall ``` 它将清空所选节点上的每一个单独命名空间内的每一条记录。请注意该行为不可逆,请谨慎行事! #### 错误处理与日志级别调整 遇到问题排查期间可能会涉及到修改日志输出等级从而获得更多诊断线索。编辑配置文件中的 loglevel 参数能够改变这一属性,选项包括 debug, verbose, notice 和 warning 等级。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值