首页/数据/Redis 进阶速查/down-after-milliseconds:判下限阈值
主从与哨兵51 条

down-after-milliseconds:判下限阈值

down-after-milliseconds 决定实例多久无响应被判为主观下线(SDOWN):太敏感会被网络抖动误伤,太迟钝则延长故障窗口。

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

down-after-milliseconds 是什么

down-after-milliseconds 决定一个实例「多久没有有效响应」就被判为主观下线(SDOWN)。哨兵会周期性 PING 被监控的实例,只要在设定的毫秒数内没有收到有效回复,就由当前哨兵单方面标记它已下线;这个标记只是某个哨兵的判断,还需要其他哨兵认同才会升级为客观下线并进入切换流程。因此这个参数同时影响误判率与故障窗口长度。

基本信息

默认值30000 毫秒,即 30 秒
作用范围同时影响主库、从库与其他哨兵的判定
配置位置sentinel down-after-milliseconds <master-name> <毫秒>
判定结果该哨兵视角下的 SDOWN,其他哨兵可能有不同判断
常见调优链路稳定的内网可调小到 5 至 10 秒,跨地域链路适当放大

典型使用场景

  • 缩短故障窗口:内网环境将阈值下调,让真正的故障更快被识别并完成切换
  • 降低误切换:链路抖动频繁或主库偶发慢操作时适当放大,避免无谓切换
  • 主库执行重操作前的准备:已知会有长时间阻塞时,提前评估是否会触发判定
  • 跨地域部署:跨机房链路 RTT 高且抖动大,阈值需要按实测基线调整
  • 复盘切换事件:对照日志中的判定时间与阈值设置,判断切换是否由真实故障触发

查看与调整

查看与调整
redis-cli -p 26379 SENTINEL MASTER mymaster | grep -A1 down-after
redis-cli -p 26379 SENTINEL GET-MASTER-ADDR-BY-NAME mymaster
# 运行期调整(部分版本支持,需结合配置文件一起改)
redis-cli -p 26379 SENTINEL SET mymaster down-after-milliseconds 10000
redis-cli -p 26379 SENTINEL FLUSHCONFIG          # 写回配置文件
tail -f /var/log/redis/sentinel.log              # 观察 +sdown 与 -sdown 事件

取值取舍

取值效果风险
过小(如 1 秒)故障识别快网络抖动或慢查询即触发误判与无谓切换
默认 30 秒兼顾稳定性与恢复速度真实故障的切换窗口偏长
5 至 10 秒内网常用区间需确认主库不会出现超过该时长的阻塞
跨地域放大容忍链路抖动故障窗口随之延长
该参数会向下传递:哨兵在判定从库和其他哨兵时也使用同一套阈值,因此它不只影响主库的切换速度。链路质量差的环境统一放大,比只针对主库单独设置更容易维护。
主库出现长时间阻塞同样会被判定下线:执行 SAVE、加载大快照、运行大批量命令都可能让处理时间超过阈值,触发一次没有必要的切换。切换本身有代价(重新同步、客户端重连),因此任何可能长时间阻塞主库的操作都应先评估该阈值。

易错点

  • 阈值设得过小,网络抖动或主库一次慢操作就触发切换,客户端在反复重连中体验急剧下降
  • 阈值设得过大,真实故障时要等很久才切换,故障窗口被无声拉长,可用性指标与实际不符
  • 在跨机房环境中直接沿用内网的小阈值,链路抖动被放大为频繁误判
  • 调整后只改了运行期或只改了配置文件,两侧不一致导致重启后行为变化,需要在变更时同步确认

数据来源与参考

  • Redis 官方文档:Sentinel down-after-milliseconds 说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌