06.21 codis-server/redis主從同步超時

問題簡介

codis-server/redis主從同步超時

在linux服務器上搭建了codis集群,新增加了一個節點,在操作codis集群進行主從同步的時候,發現key加載到快完成的時候,就停下來了,不繼續加載key到內存了,等一下又在重新全量同步了。(codis-server節點內存使用量比較大)

排查日誌看到如下內容:

主節點日誌:

[12168] 14 Jun 23:47:45.015 # Client id=2527238 addr=X.X.X.X:18890 fd=7 name= age=219 idle=219 flags=S db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=16347 oll=4151 omem=95590296 events=rw cmd=psync scheduled to be closed ASAP for overcoming of output buffer limits.

從節點日誌:

Connection with master lost


原因分析

redis主從複製一般涉及到兩個變量:

1、codis-server/redis默認配置中repl-timeout的時間為60s,當複製數據的時間超過60s時,codis-server/redis master就會認為連接超時主動斷開連接,也就是Connection with master lost報錯。

2、複製數據佔用服務器資源的大小client-output-buffer-limit參數就決定了客戶端輸出緩衝區內存使用量,默認client-output-buffer-limit slave 256mb 64mb 60

從上面的日誌可以看到scheduled to be closed ASAP for overcoming of output buffer limits. 這個應該是第二個參數影響的。

codis-server/redis主從同步超時


解決

先查看一下當前變量的

127.0.0.1:7001> config get client-output-buffer-limit

1) "client-output-buffer-limit"

2) "normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60"

查看:

127.0.0.1:7001> config get client-output-buffer-limit

動態修改:

127.0.0.1:7001> config set client-output-buffer-limit "slave 536870912 134217728 120"

默認:

127.0.0.1:7001> config get client-output-buffer-limit "slave 268435456 67108864 60"

注意:當數據同步完成後最好將配置修改為原配置,避免佔用服務器資源過高引起其他問題,特別注意內存的使用量。

如果是要永久生效在配置文件添加以下內容:

client-output-buffer-limit slave 268435456 67108864 60

codis-server/redis主從同步超時


分享到:


相關文章: