跳到主要内容

第8章 Redis监控

Redis 提供了 INFO 命令来获取服务器的统计信息和运行状态。通过监控这些指标,可以及时发现问题并进行优化。

参考文档:http://www.redis.cn/commands/info.html

监控指标详解

Server 信息

包含 Redis 服务器的基本信息:版本号、运行模式(standalone/sentinel/cluster)、操作系统、进程 PID、运行时长、配置文件路径等。

关键指标:

  • uptime_in_seconds:服务器运行时长(秒)
  • process_id:进程 PID
  • tcp_port:监听端口
  • config_file:配置文件路径

Clients 连接

监控客户端连接状态,帮助了解系统负载:

  • connected_clients:当前连接数(不含从节点)
  • blocked_clients:阻塞命令等待的客户端数
  • client_longest_output_list:最长输出列表
  • client_biggest_input_buf:最大输入缓存
🚨 生产环境监控建议

定期检查 connected_clients,避免连接数过多导致性能下降。如果 blocked_clients 持续增长,可能存在慢查询或死锁问题。

Memory 内存

内存是 Redis 最重要的监控指标:

核心指标

  • used_memory:Redis 分配的内存总量
  • used_memory_rss:操作系统分配给 Redis 的内存(常驻内存)
  • used_memory_peak:内存使用峰值
  • mem_fragmentation_ratio:内存碎片率(rss/used)

内存状态判断

  • 碎片率 > 1.5:存在严重内存碎片,考虑重启实例
  • used > rss:部分内存被换出到 swap,会导致严重性能问题
  • used_memory 接近 maxmemory:需要扩容或优化数据结构
⚠️ 内存问题诊断

内存碎片过高

  1. 检查 mem_fragmentation_ratio,正常值应在 1.0-1.5 之间
  2. 碎片率过高时执行 CONFIG SET activedefrag yes 开启主动碎片整理
  3. 必要时在业务低峰期重启实例

内存使用过高

  1. 检查是否有大 key:redis-cli --bigkeys
  2. 分析内存使用:MEMORY STATS
  3. 优化数据结构或增加 maxmemory 限制

Persistence 持久化

监控 RDB 和 AOF 的执行状态:

RDB 相关

  • rdb_last_bgsave_status:最后一次 RDB 保存状态
  • rdb_last_bgsave_time_sec:最后一次保存耗时
  • rdb_changes_since_last_save:上次保存后的修改次数

AOF 相关

  • aof_enabled:AOF 是否启用
  • aof_last_rewrite_time_sec:最后一次重写耗时
  • aof_current_size:当前 AOF 文件大小
  • aof_buffer_length:AOF 缓冲区大小

Stats 统计

运行统计信息:

  • total_commands_processed:处理的命令总数
  • instantaneous_ops_per_sec:每秒处理命令数(QPS)
  • keyspace_hits/misses:缓存命中率相关
  • evicted_keys:因内存限制驱逐的 key 数量

缓存命中率计算

命中率 = keyspace_hits / (keyspace_hits + keyspace_misses) * 100%

Replication 主从复制

主从复制状态监控:

  • role:实例角色(master/slave)
  • connected_slaves:连接的从节点数
  • master_link_status:主从连接状态
  • master_last_io_seconds_ago:主从最后通信时间
🚨 主从复制监控要点
  1. 监控 master_link_status,确保主从连接正常
  2. 关注 master_last_io_seconds_ago,超过 10 秒可能存在网络问题
  3. 检查 master_sync_in_progress,长时间同步可能影响性能

CPU 使用

CPU 使用情况:

  • used_cpu_sys:系统 CPU 消耗
  • used_cpu_user:用户 CPU 消耗
  • used_cpu_sys_children:后台进程系统 CPU
  • used_cpu_user_children:后台进程用户 CPU

监控最佳实践

💡 监控建议
  1. 设置告警阈值

    • 内存使用率 > 80%
    • 连接数 > 最大连接数的 80%
    • 主从延迟 > 10 秒
    • 缓存命中率 < 90%
  2. 定期巡检

    • 每小时检查内存碎片率
    • 每天检查慢查询日志
    • 每周分析大 key
  3. 使用监控工具

    • Redis 自带:INFO、MONITOR、SLOWLOG
    • 第三方:Redis Exporter + Prometheus + Grafana
    • 云服务:阿里云 Redis 监控、AWS ElastiCache 监控

更新: 2025-01-17 09:48:12