问题说明
主从节点失联。
查看现象
info replication
127.0.0.1:16379> info replication
# Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:3eaad5da83726a80827cf0ec9c520380c41d8445
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:63806430653
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:268435456
repl_backlog_first_byte_offset:63537995198
repl_backlog_histlen:268435456
查看日志信息
主节点日志
Client id=247808 addr=xxxxx:38885 laddr=xxxxxx:16379 fd=18 name= age=113 idle=113 flags=S db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 argv-mem=0 obl=3236 oll=1910 omem=1076441872 tot-mem=1076462384 events=rw cmd=psync user=default redir=-1 scheduled to be closed ASAP for overcoming of output buffer limits.
从节点日志
4057367:S 26 Sep 2025 00:10:18.244 * MASTER <-> REPLICA sync: receiving 6215125354 bytes from master to disk
4057367:S 26 Sep 2025 00:10:29.179 # I/O error trying to sync with MASTER: connection lost
4057367:S 26 Sep 2025 00:10:29.180 * Reconnecting to MASTER xxxxx:16379 after failure
解决方法
要大于从节点日志信息 receiving 6215125354 bytes
redis-cli config set client-output-buffer-limit "replica 10gb 8gb 600"
replica <hard-limit> <soft-limit> <软性限制持续时间>hard-limit:副本客户端输出缓冲区的绝对最大值。若缓冲区达到此值,Redis 会立即断开 该副本的连接,防止内存耗尽。适用场景:适用于数据同步量巨大的场景(如全量同步期间)。soft-limit:缓冲区的预警阈值。软性限制持续时间:若缓冲区大小 持续超过软限制(8GB)的时间达到 600秒(10分钟),Redis 会断开副本连接。
目的:允许短暂峰值(如突发同步流量),但避免长期高内存占用。