Redis默认不生成日志文件,需手动配置logfile路径并重启或重载,否则日志为空导致排查卡住;关键配置为logfile和loglevel,二者缺一不可。

从节点日志里找不到错误?先确认日志是否真在写
很多排查卡在第一步:根本没看到报错。因为 redis.conf 里 logfile 默认是空字符串,等于日志完全关闭。运行 redis-cli CONFIG GET logfile,如果返回 "",就说明你看到的全是“静默失败”。必须手动配好路径并重启或发 SIGUSR1 重载。
关键配置项只有两个:logfile /var/log/redis/redis-server.log 和 loglevel notice(调试时可临时设为 verbose)。别只改了 loglevel 却漏掉 logfile——后者不设,前者再高也没输出。
验证是否生效:tail -f /var/log/redis/redis-server.log 启动从节点后立刻盯住,几秒内就该出现 Connecting to MASTER 或直接报错。没滚动?说明日志根本没写进去。
连接建立阶段失败:看网络和主节点监听配置
从节点日志里出现 Error condition on socket for SYNC: Connection refused,基本锁定主节点没对外监听。检查主节点 redis.conf 的 bind 配置:如果还是默认的 bind 127.0.0.1,它只接受本地回环连接,从节点远程连必然被拒。
常见疏漏点:
-
bind改了但忘了配protected-mode no(尤其 Redis 6+ 默认开启) - 防火墙挡住了
6379端口:iptables -L -n | grep 6379或ufw status - 云服务器安全组没放行对应端口,比本地防火墙还容易被忽略
- 主节点
port被改过,但从节点slaveof指令仍写默认6379
最简验证法:telnet <master_ip><master_port></master_port></master_ip> 从从节点机器上直连。不通?问题一定在链路层,不用往下看复制逻辑。
连接已建立但很快断开:重点查 repl-timeout 和缓冲区溢出
master_link_status: up 然后几秒变 down,且日志里没明显错误,大概率是超时或缓冲区撑爆。Redis 默认 repl-timeout 60,但在高压或大 RDB 场景下远远不够。
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
两类典型表现:
- 全量同步阶段断:主节点
bgsave生成 RDB 耗时 >repl-timeout,从节点等不到数据就主动断开,重试→再断→死循环 - 增量同步阶段断:主节点
client-output-buffer-limit slave触发限流,缓冲区满后强制断开从节点连接
紧急修复命令(无需重启):
CONFIG SET repl-timeout 300CONFIG SET client-output-buffer-limit "slave 1024mb 512mb 120"CONFIG SET repl-backlog-size 1024mb
注意:后两项必须同时调,只改 repl-backlog-size 不解决发送瓶颈,只改 client-output-buffer-limit 不解决重连后追不上。
日志里只有 “I/O error” 或 “Connection reset by peer”?查 SELinux 和 TCP 参数
CentOS/RHEL 系统上,SELinux 默认会拦截 Redis 的网络连接行为,尤其是非标准端口或跨网段同步。现象是 telnet 通、redis-cli -h 也通,但从节点就是连不上主节点,日志只打模糊错误。
快速验证:setenforce 0 临时关闭 SELinux,再试同步。如果立刻恢复,就坐实问题。永久解决需加策略:ausearch -m avc -ts recent | audit2why 查拒绝原因,再用 audit2allow 生成模块。
另一个隐蔽点是 TCP keepalive。Linux 默认 tcp_keepalive_time 是 7200 秒,远大于 Redis 的 repl-ping-slave-period(默认 10 秒)。若中间有 NAT 设备或防火墙清理空闲连接,可能把复制长连接悄无声息地 Kill 掉。可调低系统级参数:echo 300 > /proc/sys/net/ipv4/tcp_keepalive_time。

















