天天看點

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)?除了上述方法外,是否有其它更安全可靠的釋放辦法?

繼續閱讀