Redis监控与诊断实战:性能优化与问题排查指南
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. INFO命令全景分析
INFO
命令返回服务器状态信息,关键模块包括:
# 获取指定模块信息
info cpu
info replication
info stats
核心指标速查表:
模块 | 关键指标 | 健康阈值 |
---|---|---|
memory | used_memory_human | 不超过maxmemory的80% |
stats | instantaneous_ops_per_sec | 根据业务容量规划 |
persistence | rdb_last_bgsave_status | 必须为"ok" |
clients | connected_clients | 不超过maxclients的80% |
cpu | used_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. 关键告警规则配置建议
内存告警:
- 规则:
used_memory/maxmemory > 0.8
- 动作:扩容或清理过期Key
- 规则:
复制中断:
- 规则:
master_link_status == down
- 动作:检查网络和主节点状态
- 规则:
持久化失败:
- 规则:
rdb_last_bgsave_status == err
- 动作:检查磁盘空间和权限
- 规则:
四、典型问题排查流程
案例:Redis响应变慢
- 检查慢查询日志
- 分析
INFO commandstats
命令耗时 - 监控
redis-cli --latency
网络延迟 - 检查
used_cpu_sys
系统CPU占用 - 确认
memory_fragmentation_ratio
碎片率
优化措施:
- 大Key拆分:使用
HSCAN
分批处理大Hash - 管道化操作:减少RTT时间
- 连接池调优:避免频繁创建连接
总结
Redis监控需要关注性能指标与诊断工具的结合使用。建议建立完善的监控体系,重点关注慢查询、内存碎片和关键运行时指标。通过定期分析监控数据,可以提前发现潜在问题,保障Redis服务的稳定高效运行。