問題說明
主從節(jié)點(diǎn)失聯(lián)。
查看現(xiàn)象
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
查看日志信息
主節(jié)點(diǎn)日志
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.
從節(jié)點(diǎn)日志
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
解決方法
要大于從節(jié)點(diǎn)日志信息 receiving 6215125354 bytes
redis-cli config set client-output-buffer-limit "replica 10gb 8gb 600"
replica <hard-limit> <soft-limit> <軟性限制持續(xù)時(shí)間>
hard-limit:
副本客戶端輸出緩沖區(qū)的絕對最大值。
若緩沖區(qū)達(dá)到此值,Redis 會立即斷開 該副本的連接,防止內(nèi)存耗盡。
適用場景:適用于數(shù)據(jù)同步量巨大的場景(如全量同步期間)。
soft-limit:
緩沖區(qū)的預(yù)警閾值。
軟性限制持續(xù)時(shí)間:若緩沖區(qū)大小 持續(xù)超過軟限制(8GB)的時(shí)間達(dá)到 600秒(10分鐘),Redis 會斷開副本連接。
目的:允許短暫峰值(如突發(fā)同步流量),但避免長期高內(nèi)存占用。