我遇到了 redis 复制问题,我无法弄清楚。 Master 不断达到客户端输出缓冲区限制。
主控配置:
# redis-cli -p 6380 config get client-output-buffer-limit
1) "client-output-buffer-limit"
2) "normal 0 0 0 slave 536870912 536870912 0 pubsub 33554432 8388608 60"
主日志:
Client id=3014598 addr={{MASTER}} fd=6 name= age=217 idle=217 flags=S db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=3723 oll=4806 omem=581952061 events=rw cmd=psync scheduled to be closed ASAP for overcoming of output buffer limits.
大师信息:
# redis-cli -p 6380 info
role:master
connected_slaves:1
slave0:ip={{SLAVE_IP}},port=6380,state=wait_bgsave,offset=0,lag=0 // stays on wait_bgsave
从属信息:
role:slave
master_host:{{MASTER_IP}}
master_port:6380
master_link_status:down
master_last_io_seconds_ago:-1
master_sync_in_progress:1
Redis版本:3.0.2
数据库大小:~21GB
Master 是一个 30GB Ram EC2 实例
Slave是一个60GB Ram EC2实例
从设备正在连接,但是无论我将缓冲区设置得有多高,主设备总是超时。 master几乎总是处于wait_bgsave状态。
任何人都可以深入了解为什么会发生这种情况吗?
尝试为复制创建 RDB 转储文件时可能会出现问题。它可能没有足够的 RAM 来创建文件,或者可能存在从属设备无法足够快地读取传入数据的问题,因此它会断开连接。
您可以通过在 redis-cli 上发出 bgsave 来检查它是否成功,并检查redis.conf对于客户端输出缓冲区限制部分。对于解决方法,您可以尝试新的无盘复制,它可能需要更少的 RAM 来完成它(尽管我从未找到任何文档这么说)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)