首页/数据/Redis 进阶速查/failover-timeout 的作用
主从与哨兵51 条

failover-timeout 的作用

failover-timeout 控制切换相关超时:如从「故障确认」到「完成切换」的等待上限、重试间隔等,影响切换节奏与重复切换行为。

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

切换节奏的时间基准

切换超时不是单一含义的超时值,而是一组时间基准:它约束一次切换从发起到被判定失败的上限、失败之后再次尝试的等待间隔,以及切换完成后等待其余从库重新指向新主的时间。调小会让切换更快,但失败重试也更密集。

基本信息

默认值180000 毫秒,即 3 分钟
配置位置哨兵配置文件,也可运行时通过命令调整
查看方式查询某个被监控主库的详情,其中的切换超时字段
作用范围按被监控主库逐个配置,不同主库可不同

什么时候要调

  • 从库数据量大、切换后追平耗时较长:需要放大,避免完成前就被判失败
  • 快速恢复优先的业务:可适度调小,同时接受更高的重试频率
  • 切换反复失败:先确认是不是候选从库太落后,而不是只盯这个参数
  • 跨机房部署:重指向与同步都更慢,阈值要按最慢路径来定

查看与调整

查看与调整
redis-cli -p 26379 SENTINEL MASTER mymaster | grep -E 'failover-timeout|down-after'
redis-cli -p 26379 SENTINEL SET mymaster failover-timeout 180000   # 运行时调整
redis-cli -p 26379 SENTINEL CKQUORUM mymaster                      # 切换前确认票数可达
redis-cli -p 26379 SENTINEL FAILOVER mymaster                      # 手动切换同样受该时限约束
grep -E 'try-failover|failover-end|failover-state' /var/log/redis/sentinel.log | tail -20
redis-cli -p 26379 SENTINEL FLUSHCONFIG                            # 把运行时配置写回文件

三处时间用途

用途时间量含义
切换失败的判定从发起切换到判定失败超时未完成则本次尝试失败
失败后的重试间隔官方定义为两倍切换超时同一主库不会立刻再次尝试
切换后的重指向最长等待其余从库跟随新主超时则记录并继续,不阻塞整体
与下线判定的区分另一个参数管多久判下线两者共同决定整体切换时长
与票数的区分票数决定能否进入切换票数不足时切换根本不会开始
这个参数只影响切换节奏,不影响多久判定主库下线。排查切换太慢时先分清是判定慢还是切换慢,两个问题要看的参数并不相同。
运行时通过命令修改只作用于当前哨兵实例,且不会写回配置文件。正式变更要同步更新所有哨兵的配置文件,并执行写回命令固化,否则换机或重启后配置会回退。
把它调到几秒只是让哨兵更快放弃与重试:切换更容易在从库尚未追平时反复失败,甚至出现切了又切的抖动。生产值应结合从库数据量、网络质量与业务恢复目标一起确定。

易错点

  • 用调小这个值来加速切换:切换更快失败与重试,反而可能在从库未追平时反复切换
  • 多台哨兵的取值不一致:切换节奏判定混乱,容易重复尝试或提前放弃
  • 运行时改完不落盘:只改了内存配置,换机或重启后回退,问题重现且难以定位
  • 与下线判定参数设成同一个值:两者含义不同,混设会让故障发现与切换都失去预期节奏
  • 候选从库本身落后很多时只调这个参数:切换慢的根因是数据追平时间,调参数解决不了

数据来源与参考

  • Redis 官方文档:Sentinel failover-timeout 说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌