Redis监控与诊断实战指南

一、性能指标监控

1. 慢查询日志(slowlog)

Redis慢查询日志记录了执行时间超过指定阈值的命令,是性能调优的重要依据。

# 配置慢查询阈值(微秒)
config set slowlog-log-slower-than 10000
# 保留慢查询条数
config set slowlog-max-len 128
# 查看慢查询日志
slowlog get 5

输出示例:

1) 1) (integer) 14           # 唯一ID
   2) (integer) 1632645127   # 时间戳
   3) (integer) 12034        # 执行时间(微秒)
   4) 1) "keys"              # 命令
      2) "*user*"
   5) "127.0.0.1:58352"      # 客户端
   6) ""                     # 客户端名称

实践建议:

  • 生产环境建议设置slowlog-log-slower-than为1-10ms
  • 避免使用KEYS *等全量扫描命令
  • 定期分析慢日志,优化高频慢查询

2. 内存碎片率(mem_fragmentation_ratio)

内存碎片率反映内存使用效率,计算公式为:

mem_fragmentation_ratio = used_memory_rss / used_memory

诊断标准:

  • 1.0-1.1:理想状态
  • 1.5:存在明显碎片
  • <1.0:内存交换(swap)发生
# 查看内存信息
info memory

内存优化方案:

图1

二、诊断工具详解

1. INFO命令全景分析

INFO命令返回服务器状态信息,关键模块包括:

# 获取指定模块信息
info cpu
info replication
info stats

核心指标速查表:

模块关键指标健康阈值
memoryused_memory_human不超过maxmemory的80%
statsinstantaneous_ops_per_sec根据业务容量规划
persistencerdb_last_bgsave_status必须为"ok"
clientsconnected_clients不超过maxclients的80%
cpuused_cpu_sys持续>80%需扩容

实践建议:

  • 使用redis-cli --bigkeys发现大Key
  • 监控keyspace_hits/keyspace_misses评估缓存命中率
  • 关注rejected_connections检查连接数瓶颈

2. redis-cli --stat 实时监控

实时监控工具提供秒级统计数据:

redis-cli --stat

输出示例:

------- data ------ --------------------- load -------------------- - child -
keys       mem      clients blocked requests            connections          
10         1.20M    5       0       24 (+0)             14          
12         1.35M    6       0       47 (+23)            15

关键字段说明:

  • mem:内存使用量
  • blocked:被阻塞的客户端数
  • requests:总请求数(括号内为增量)
  • connections:历史连接总数

三、监控体系搭建方案

1. 企业级监控架构

图2

2. 关键告警规则配置建议

  1. 内存告警

    • 规则:used_memory/maxmemory > 0.8
    • 动作:扩容或清理过期Key
  2. 复制中断

    • 规则:master_link_status == down
    • 动作:检查网络和主节点状态
  3. 持久化失败

    • 规则:rdb_last_bgsave_status == err
    • 动作:检查磁盘空间和权限

四、典型问题排查流程

案例:Redis响应变慢

  1. 检查慢查询日志
  2. 分析INFO commandstats命令耗时
  3. 监控redis-cli --latency网络延迟
  4. 检查used_cpu_sys系统CPU占用
  5. 确认memory_fragmentation_ratio碎片率

优化措施:

  • 大Key拆分:使用HSCAN分批处理大Hash
  • 管道化操作:减少RTT时间
  • 连接池调优:避免频繁创建连接

总结

Redis监控需要关注性能指标与诊断工具的结合使用。建议建立完善的监控体系,重点关注慢查询、内存碎片和关键运行时指标。通过定期分析监控数据,可以提前发现潜在问题,保障Redis服务的稳定高效运行。

添加新评论