¿Cómo puedo evitar errores comunes de Databases for Redis ?
Databases for Redis es una base de datos en memoria. Difiere de las bases de datos persistentes tradicionales en cómo acepta, procesa y almacena los datos. La información siguiente resalta los errores comunes que puede experimentar, algunos motivos de dichos errores y las soluciones que puede aplicar para solucionar dichos errores.
Error: mensaje Connection to master lost
Databases for Redis funciona con dos miembros (maestro y réplica) y tres centinelas. Las razones siguientes pueden ser la causa del mensaje connection to master lost
:
a. Debido a las operaciones de entrada/salida inferiores por segundo (IOPS), el maestro está ocupado y no responde a los centinelas, lo que devuelve este mensaje de error en LogDNA.
b. Debido a la latencia de red, los centinelas no pueden comunicarse con el maestro.
c. Actividades de mantenimiento planificadas.
d. Actualizaciones de versión menor.
Soluciones
Pruebe las soluciones siguientes para solucionar el error:
a. Aumente el tamaño del disco. 1 GB es igual a 10 IOPS.
b. Mover a cálculo aislado para asignación de recursos dedicados.
c. Aumente el tamaño de RAM.
d. La lógica RETRY es necesaria, por lo que debe asegurarse de que se implementa.
e. La réplica se promocionará al maestro automáticamente después de unos segundos.
f. Implemente las políticas memory eviction
o TTL
en la instancia de Redis.
IBM® Cloud Databases no realiza ninguna actividad en el nodo maestro. Si es necesario, todas las actividades se completan en el nodo de réplica, que luego se promociona al maestro. Las bases de datos se establecen para esperar 30 segundos para encontrar el nodo maestro antes de que se produzca la promoción de réplica.
Error: Fsync de AOF asíncrono está tardando demasiado (¿el disco está ocupado?)
AOF es Append Only File. Este es el registro grabado en el disco persistente Redis cuando el valor persistente está activado.
Redis utiliza archivos AOF y RDB para escribir su registro y RDB para la creación de instantáneas.
Algunas de las razones por las que puede ver este error son las siguientes:
a. Debido a la insuficiencia de IOPS, Redis no puede grabar en el disco.
b. Podría haber una copia de seguridad de Databases for Redis en ejecución al mismo tiempo que se ejecuta el lote.
c. Es posible que la aplicación esté poniendo llamadas de API desconocidas a la instancia de Redis.
Excepto PSYNC que se utiliza para las métricas, no solicitamos ninguna otra API en la instancia.
Soluciones:
Pruebe las soluciones siguientes para solucionar el error:
a. Aumente el tamaño del disco. Una recomendación de ballpark es un 30% más del volumen esperado.
b. Si Redis tiene la capacidad máxima, divida una única instancia de Redis en varias instancias y ajuste la arquitectura de la aplicación.
c. Desactive la persistencia si no es necesaria. En su lugar, cambie a la modalidad de memoria caché.
El tamaño de disco no se puede reducir, pero la memoria sí. Puesto que Redis es un almacén de datos en memoria, le recomendamos que evalúe el tamaño de los datos en curso antes de reducir el tamaño de la memoria de la instancia porque una reducción significativa puede dar como resultado un error.
Error: El escalado de una instancia está atascado o tarda más de lo esperado
Con IBM Cloud, puede escalar o redimensionar la instancia a medida que aumenten sus necesidades de datos. Ofrecemos el escalado automático y el escalado manual desde la interfaz de usuario, la CLI y las API. Sin embargo, tenga cuidado al cambiar el tamaño de la instancia. Si el escalado tarda más de lo esperado, podría deberse a una de las razones siguientes:
a. La instancia ya está en la instancia más grande (cores*rams) y no hay ningún clúster más grande disponible para mover la carga de trabajo actualmente. En este caso, se forma un nuevo clúster y se mueve la instancia, lo que puede tardar unos minutos.
b. Ha reducido su memoria drásticamente (por ejemplo, de 16 GB de RAM a 10 GB de RAM). Sin embargo, el tamaño del almacén de datos (disco) es mayor, por ejemplo, 11 GB. En estos casos, no hay espacio suficiente en la RAM para leer datos del disco, y la formación puede atascarse.
Soluciones:
Pruebe las soluciones siguientes para solucionar el error:
a. Redis es una hebra única para sus operaciones primarias. Se espera que utilice menos núcleos y más memoria. Esto aumenta la probabilidad de la disponibilidad de un clúster.
b. Aumente la RAM y el disco en función de las necesidades de E/S.
c. No reduzca su RAM drásticamente. Se le aconseja que decrete gradualmente.
Asegúrese de que queda memoria de marca de límite para que Redis realice sus procesos inherentes.
Error: READONLY No puede escribir en un esclavo de sólo lectura
Databases for Redis tiene dos nodos, maestro y réplica. Los usuarios solo pueden conectarse al nodo maestro y el nodo de réplica se utiliza para garantizar la alta disponibilidad, que generalmente es inaccesible para los usuarios. Sin embargo, al igual que con cualquier conexión remota, se puede producir una conmutación donde la réplica se promociona al maestro. Puede experimentar un error momentáneo en el servicio y no se espera ningún otro impacto si los nodos se han configurado correctamente.
a. Debido a IOPS inferiores, el maestro está ocupado y no responde a los centinelas, lo que devuelve este mensaje de error en LogDNA.
b. Debido a la latencia de red, los centinelas no pueden comunicarse con el maestro.
c. Mantenimiento planificado.
d. Actualizaciones de versión menor.
Soluciones:
Pruebe las soluciones siguientes para solucionar el error:
a. Incluya la lógica de reintento y reconexión en el diseño de la aplicación. Puede utilizar bibliotecas como ioredis
y noderedis
. Para obtener más detalles, consulte Detección y manejo de errores con la publicación de blog de Redis.
b. Determinados clientes tienen lógica de reintento y reconexión incorporada. También puede hacer uso de estos clientes.
c. Se recomienda encarecidamente reintentar y reconectar la lógica para cualquier servicio de nube.