Esta web utiliza cookies, puedes ver nuestra política de cookies aquí. Si continuas navegando estás aceptándola

Sincronización Redis, bucle infinito


La sincronización de redis puede ser problemática si el dataset a transferir es de gran tamaño, mientras un master le pasa el dataset a un slave los cambios se guardan en ram, cuando el slave ha recibido los datos se le pasan los cambios que el master había almacenado en ram.

Si el buffer de cambios es demasiado pequeño el dataset ya no es válido y se reinicia el proceso de sincronización desde cero, esta reinicialización se producirá de forma indefinida formando un bucle infinito, en este artículo explicaremos como modificar dichos buffers para poder finalizar la sincronización con éxito.

 

En los logs del master podremos ver algo parecido a esto:

[4394] 06 Jan 23:42:48.977 # Client addr=X.X.X.X:41702 fd=22 name= age=1287 idle=463 flags=S db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=19354 omem=536875344 events=rw cmd=sync scheduled to be closed ASAP for overcoming of output buffer limits.

Vamos a subir los límites del buffer pero debemos tener en cuenta que necesitaremos mas ram en el master para mantener esos cambios adicionales.

Todos los comandos de manipulación de buffers se ejecutarán en el master.

Consultamos los valores actuales para poder revertir el cambio una vez haya finalizado la sincronización:

redis 127.0.0.1:6379> config get client-output-buffer-limit
1) "client-output-buffer-limit"
2) "normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60"

Cambiamos los valores:

redis 127.0.0.1:6379> config set client-output-buffer-limit "slave 536870912 536870912 0"
OK

Nos aseguramos de que se hayan aplicado los cambios:

redis 127.0.0.1:6379> config get client-output-buffer-limit
1) "client-output-buffer-limit"
2) "normal 0 0 0 slave 536870912 536870912 0 pubsub 33554432 8388608 60"

Si el slave sigue sin sincronizar seguiremos aumentando el buffer en el master hasta que la sincronización finalize satisfactoriamente.


Autor: Kr0m -- 24/07/2019 09:27:51