Redis主从复制连接丢失怎么解决?排查网络与配置的完整指南
V2.0
以下是对 Redis 运行日志中九类常见关键事件的 优化整理与结构化分析,每条信息包含 问题描述、原因分析、优化建议 三个部分,并在最后做 统一总结,以便用于运维笔记或故障排查手册:
Redis 关键事件优化说明
1.Asynchronous AOF fsync is taking too long (disk is busy?)
问题描述:
Redis AOF 异步刷盘过程中,fsync() 操作耗时过长。
原因分析:
- 磁盘 I/O 压力大;
- 当前 Redis 配置为
appendfsync everysec; - AOF 写入量过大导致
fsync堵塞。
优化建议:
- 使用
iostat、vmstat或dstat监控磁盘写入; - 将存储换为 SSD/NVMe;
- 设置
appendfsync everysec(避免每次写都 fsync); - 增加 AOF 缓冲区与开启
aof-use-rdb-preamble yes减少 fsync 频率; - 配合使用
no-appendfsync-on-rewrite yes避免 AOF 重写时额外阻塞。
2.Replication backlog created
问题描述:
主服务器创建了复制积压缓冲区。
原因分析:
- 有从库连入并请求同步;
- Redis 为了支持 PSYNC 增量复制而启用 backlog。
优化建议:
- 配置
repl-backlog-size(建议视写入量设置为10-100MB); INFO replication监控 backlog 使用情况;- 如果频繁出现 full sync,需增加 backlog 保留时间或大小。
3.Can’t attach the replica to the current BGSAVE
问题描述:
从服务器请求同步时,无法附着当前的 BGSAVE。
原因分析:
- 当前 BGSAVE 进程是为其他用途(如定期持久化)触发;
- Redis 为避免资源冲突,不支持多个 BGSAVE 同时存在。
优化建议:
- 减少
save触发频率,如设置save 900 1; - 增加 CPU 资源,确保 BGSAVE 快速完成;
- 若频繁发生,可考虑基于 RDB+AOF 混合持久化。
4.Connection with replica lost
问题描述:
主服务器与某从服务器断开连接。
原因分析:
- 网络波动或中断;
- 从库重启、压力过高或主动断连;
- 主从版本不兼容或认证失败。
优化建议:
- 使用
ping、traceroute检查主从网络; - 设置更宽容的
repl-timeout 60; - 从库设置
master-retry-timeout 10实现快速重连; - 检查是否存在频繁 failover 或网络防火墙干预。
5.Replication backlog freed after 3600 seconds without connected replicas
问题描述:
主服务器因无 replica 连入,释放了 backlog 缓冲区。
原因分析:
- 默认配置
repl-backlog-ttl 3600; - Redis 为节省内存释放该 buffer。
优化建议:
- 调高
repl-backlog-ttl值,如repl-backlog-ttl 86400; - 确保至少有一个从库长时间连线;
- 配合使用
replica-priority 0避免误触 failover。
6.Received SIGTERM scheduling shutdown
问题描述:
Redis 收到外部系统发出的终止信号(如 kill 或容器销毁)。
原因分析:
- 用户手动关闭;
- 系统服务关闭或容器生命周期结束;
- 外部服务发送了
SIGTERM信号。
优化建议:
- 使用
SHUTDOWN命令而非 kill; - 确保应用优雅关闭流程中含数据持久化逻辑;
- 若为容器场景,设置
stop_grace_period和preStophook。
7.User requested shutdown
问题描述:
用户请求 Redis 正常关闭。
原因分析:
- 管理员操作;
- 应用层控制逻辑触发;
- 测试或升级过程中手动关闭。
优化建议:
- 使用
SHUTDOWN SAVE或SHUTDOWN NOSAVE控制行为; - 手动执行
SAVE/BGSAVE保证数据完整; - 关闭前使用
INFO检查是否有未完成写入。
8.There is a child saving an .rdb. Killing it!
问题描述:
Redis 正在关闭时,有 BGSAVE 子进程未完成,被强制终止。
原因分析:
SIGTERM到达时有活跃的 RDB 进程;- 没有设置足够的
shutdown-timeout。
优化建议:
- 设置
shutdown-timeout 100(默认值为10); - 关闭前先用
INFO persistence查看 RDB 状态; - 若非急迫,等待
BGSAVE完成再关机。
9.Calling fsync() on the AOF file
问题描述:
关闭前 Redis 执行 fsync 操作,确保 AOF 数据落盘。
原因分析:
- 确保 AOF 的持久性;
- 属于正常的关闭流程。
优化建议:
- 定期执行
BGREWRITEAOF保持 AOF 文件精简; - 检查磁盘写入性能,避免关闭等待过久;
- 设置合适的
appendfsync策略,降低关闭时 I/O 压力。
汇总建议
| 优化方向 | 具体措施 |
|---|---|
| 磁盘 I/O 性能 | 使用 SSD,优化 AOF 策略(如 everysec + no-appendfsync-on-rewrite) |
| 配置优化 | 调整 repl-*、appendfsync、save、shutdown-timeout 参数 |
| 网络稳定性 | 确保主从连接网络畅通,合理设置 timeout 与重连策略 |
| 关闭流程规范 | 统一通过 SHUTDOWN,确保持久化完成 |
| 监控与告警 | 利用 INFO 命令和 Prometheus 等工具实时监控持久化与复制状态 |
如需我帮助生成对应的 redis.conf 优化配置模板、自动化检测脚本或 Prometheus 监控规则,可以继续提问。
V1.0
1.Asynchronous AOF fsync is taking too long (disk is busy?)
分析:
这个警告表明 Redis 的异步 AOF 持久化操作中的 fsync 调用花费了太长时间。这通常是因为磁盘 I/O 繁忙,导致 Redis 无法及时将数据写入磁盘。Redis 选择不等待 fsync 完成,直接写入 AOF 缓冲区,这可能会降低 Redis 的性能。
优化建议:
- 检查磁盘 I/O 性能:使用
iostat或vmstat等工具监控磁盘 I/O 使用情况,查看是否存在 I/O 瓶颈。 - 使用更快的存储:考虑使用 SSD 或 NVMe 驱动器,这些存储设备的 I/O 性能通常比传统的机械硬盘要高得多。
- 调整
fsync频率:在redis.conf文件中,可以调整appendfsync配置项。例如,设置appendfsync everysec可以每秒调用一次fsync,而不是每次写操作都调用,这可以减少 I/O 负载。 - 增加 AOF 缓冲区大小:在
redis.conf文件中,可以增加aof-use-rdb-preamble配置项的值,这可以减少fsync的调用次数。
2.Replication backlog created
分析:当有从服务器(replica)请求同步时,Redis 会创建一个复制积压缓冲区(replication backlog)。这个缓冲区用于存储主服务器(master)的写操作,以便从服务器可以同步这些操作。
优化建议:
- 增加复制积压缓冲区大小:在
redis.conf文件中,可以增加repl-backlog-size配置项的值。默认值通常是 1MB,根据您的需求可以适当增加,例如repl-backlog-size 1024mb。 - 监控复制积压缓冲区使用情况:使用
INFO replication命令监控复制积压缓冲区的使用情况,确保它不会被填满。如果缓冲区被填满,从服务器可能会丢失数据。
3.Can’t attach the replica to the current BGSAVE
分析:这个信息表明 Redis 无法将从服务器附加到当前的后台保存(BGSAVE)进程。BGSAVE 是 Redis 用来创建 RDB 快照的后台进程。从服务器需要等待下一个 BGSAVE 进程完成,以便进行同步。
优化建议:
- 调整 BGSAVE 频率:在
redis.conf文件中,可以调整save配置项,减少 BGSAVE 的频率。例如,设置save 900 1表示每15分钟至少有1个键被修改时进行一次 BGSAVE。 - 优化 RDB 保存过程:确保 Redis 服务器有足够的资源(CPU 和内存)来处理 BGSAVE 进程。如果服务器资源紧张,可以考虑增加资源或优化其他进程。
4.Connection with replica lost
分析:这表示与从服务器的连接丢失了。这可能是由于网络问题或从服务器的故障。
优化建议:
- 检查网络连接:使用
ping或traceroute等工具检查主从服务器之间的网络连接是否稳定。 - 增加重试次数:在
redis.conf文件中,可以增加repl-timeout配置项的值,例如repl-timeout 60,表示重试超时时间为60秒。 - 配置从服务器的重连策略:在从服务器的
redis.conf文件中,可以配置master-retry-timeout配置项,例如master-retry-timeout 10,表示从服务器每10秒重试一次连接。
5.Replication backlog freed after 3600 seconds without connected replicas
分析:当没有连接的从服务器超过 3600 秒(1小时)时,Redis 会释放复制积压缓冲区,以节省内存。
优化建议:
- 调整释放时间:在
redis.conf文件中,可以调整repl-backlog-ttl配置项的值,例如repl-backlog-ttl 3600,表示复制积压缓冲区在没有连接的从服务器时保持3600秒。 - 监控从服务器连接:使用
INFO replication命令监控从服务器的连接情况,确保从服务器能够及时连接并同步数据。
6.Received SIGTERM scheduling shutdown
分析:这个信息表明 Redis 收到了 SIGTERM 信号,这是一个请求关闭的信号。Redis 计划进行关闭。
优化建议:
- 优雅关闭:确保在发送 SIGTERM 信号前,所有重要的操作已经完成,例如数据持久化。
- 使用
SHUTDOWN命令:如果可能,使用SHUTDOWN命令来关闭 Redis 服务器,这可以确保 Redis 优雅地关闭并完成所有必要的清理工作。
7.User requested shutdown
分析:这表示用户请求关闭 Redis 服务器。
优化建议:
- 确保数据持久化:在关闭 Redis 服务器前,确保所有数据已经持久化到磁盘。可以使用
BGSAVE或SAVE命令手动触发数据持久化。 - 监控关闭过程:使用
INFO命令监控 Redis 服务器的关闭过程,确保没有未完成的操作。
8.There is a child saving an .rdb. Killing it!
分析:在关闭过程中,Redis 发现有一个子进程正在保存 RDB 文件。为了完成关闭,Redis 决定终止这个子进程。
优化建议:
- 等待 BGSAVE 完成:在发送关闭信号前,确保所有 BGSAVE 进程已经完成。可以使用
INFO persistence命令监控 BGSAVE 进程的状态。 - 配置超时时间:在
redis.conf文件中,可以配置shutdown-timeout配置项,例如shutdown-timeout 100,表示在关闭过程中等待 BGSAVE 进程完成的超时时间为100秒。
9.Calling fsync() on the AOF file
分析:在关闭之前,Redis 调用 fsync() 来确保 AOF 文件的所有数据都被写入磁盘,以保证数据的持久性。
优化建议:
- 确保 AOF 文件完整性:在关闭 Redis 服务器前,确保 AOF 文件的完整性。可以使用
BGREWRITEAOF命令优化 AOF 文件。 - 监控 AOF 文件大小:使用
INFO persistence命令监控 AOF 文件的大小,确保它不会过大。如果 AOF 文件过大,可以考虑定期进行重写。
总结
- 监控和优化磁盘 I/O 性能:使用
iostat或vmstat等工具监控磁盘 I/O 使用情况,考虑使用更快的存储设备。 - 调整配置项:在
redis.conf文件中,调整appendfsync、repl-backlog-size、repl-timeout、master-retry-timeout、repl-backlog-ttl、shutdown-timeout等配置项,以优化 Redis 的性能和稳定性。 - 监控和维护:定期使用
INFO命令监控 Redis 服务器的状态,确保所有重要的操作已经完成,数据已经持久化。 - 网络稳定性:检查主从服务器之间的网络连接,确保网络稳定,减少连接丢失的情况。
通过这些优化建议,您可以提高 Redis 服务器的性能和稳定性,确保数据的持久性和一致性。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
这篇文章主要介绍了基于Redis zSet实现滑动窗口对短信进行防刷限流,主要针对目前线上短信被脚本恶意盗刷的情况,用Redis实现滑动窗口限流,本文通过实例代码给大家介绍的非常详细,需要的朋友参考下吧2022-02-02
Redis 分布式锁从SETNX 到 Redlock 的问题记录
这篇文章给大家介绍Redis分布式锁从SETNX到Redlock的问题记录,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧2026-10-10


最新评论