首页/数据/Redis 进阶速查/复制延迟监控与常见原因
主从与哨兵51 条

复制延迟监控与常见原因

延迟常见来源:网络带宽不足、主库大命令(如大 key 删除)、从库加载慢、AOF 重写占用磁盘;用 offset 差、lag 指标与从库日志联合定位。

Redis 进阶速查数据更新于 2026-10-13

复制延迟从哪里来

复制延迟指从库落后主库的时间或数据量。常见来源有四类:主库到从库的网络带宽不足,写入速率超过链路承载能力;主库出现大命令,例如删除大 key 或清库操作在复制流里形成尖峰;从库自身处理慢,包括慢查询和磁盘写入受阻;以及从库正在做重写或加载快照这类重活。定位时必须同时看两侧——主库侧看到的是偏移差与输出缓冲,从库侧看到的是链路状态与本地负载。

基本信息

主库侧观察INFO replication 中每个从库的偏移与 lag
从库侧观察master_last_io_seconds_ago 与本地负载
常见根因带宽不足、主库大命令、从库磁盘慢
缓解方向限速、拆分大 key、扩容带宽或提升从库规格
风险信号主库为从库维护的输出缓冲持续增长

典型使用场景

  • 读从库的业务出现读到旧值,需要量化延迟再决定是否回主库读
  • 主从切换前确认从库是否已经追平,避免切换后丢数据
  • 大 key 治理的依据:确认删除大 key 是否造成了延迟尖峰
  • 容量规划:按峰值写入速率评估链路带宽余量
  • 告警调优:把延迟阈值与业务能接受的新旧程度对齐

定位命令

定位命令
redis-cli INFO replication | grep -E 'master_repl_offset|slave_repl_offset'
redis-cli -h <从库> INFO replication | grep -E 'master_link_status|master_last_io_seconds_ago'
redis-cli -h <从库> INFO persistence | grep -E 'aof_rewrite_in_progress|rdb_bgsave_in_progress'
redis-cli -h <从库> SLOWLOG GET 10                 # 从库自身是否出现慢命令
redis-cli -h <主库> CLIENT LIST | grep -E 'omem'   # 输出缓冲占用情况
redis-cli -h <从库> INFO stats | grep -E 'instantaneous_input_kbps'  # 实际接收速率

观测项读法

指标含义异常表现
偏移差主库与从库复制偏移之差持续增大说明从库追不上
master_last_io_seconds_ago距上次收到主库数据的秒数数值变大说明数据流卡顿
master_link_status复制链路状态down 表示链路已经断开
输出缓冲占用主库为该从库维护的缓冲持续增长说明从库处理不过来
延迟告警要结合写入速率来看:低峰期几毫秒的差值可能只是正常的复制往返,缺少速率上下文时,固定阈值很容易变成长期无效告警,最后被值班人员直接忽略。
从库自己也在做快照或 AOF 重写时,复制延迟会明显叠加。排查要同时看从库本地的持久化状态,只看网络与带宽可能找不到真正瓶颈。

易错点

  • 删除大 key 或执行清库操作造成复制流尖峰,从库延迟飙升甚至触发输出缓冲超限被断开
  • 只扩带宽不看从库的处理能力,瓶颈其实在从库的磁盘与单线程处理上
  • 把延迟阈值设成很小的固定值,低峰期频繁误报,告警最终失去参考价值
  • 切换前不确认延迟是否接近零,切换后丢掉尚未同步的那部分写入

数据来源与参考

  • Redis 官方文档:复制延迟排查建议
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌