redis for lack of backlog

版本:
redis-3.2.9


部署:
5台64G内存的物理机,每台机器启动2个redis进程组成5主5备集群,每台机器1个主1个备,并且错开互备。


问题:
发现redis进程占用内存高达40G,而且全是备进程。尝试通过重启进程方式释放内存,但进入复制死循环,报如下所示错误:
for lack of backlog (Slave request was: 51875158284)


通过网上查找资料,修改client-output-buffer-limit和repl-timeout值,问题未能得到解决,仍然报for lack of backlog,并仍然循环复制。
move备进程的data目录,但保留nodes.conf文件,然后再重启,这次重启成功。采取同样方法处理其它备进程,同样成功,内存同样降到和主进程接近的大小10G。


待分析:为何备进程占用的内存是它的主进程的4倍(分别40G和10G)?除了上述方法外,是否有其它更安全可靠的释放办法?
原文地址:https://www.cnblogs.com/aquester/p/9891491.html