Soluciona problemas

En esta página, se explican varios casos de error y se proporciona orientación para resolverlos.

Situaciones de replicación

En esta sección, se explican los problemas de replicación que pueden ocurrir con tu clúster.

¿Cómo supervisas los retrasos de replicación?

Memorystore for Redis Cluster tiene la métrica /cluster/replication/maximum_offset_diff. Esta métrica supervisa la diferencia máxima de desfase de replicación (en bytes) para un nodo en un clúster principal.

Si se mantiene baja la diferencia de desfase de replicación, las réplicas pueden realizar operaciones de sincronización incremental con mayor frecuencia y a un costo menor que las operaciones de sincronización completa.

Te recomendamos que establezcas un umbral para la métrica maximum_offset_diff. Si se supera el umbral, Memorystore for Redis Cluster puede notificarte con una alerta.

Según el tipo de nodo de tu clúster, te recomendamos que establezcas el umbral de la siguiente manera:

  • Si el tipo de nodo es redis-shared-core-nano, redis-standard-small, redis-highmem-medium, redis-highcpu-medium o redis-standard-large, establece el umbral en menos de 64 MB.

  • Si el tipo de nodo es redis-highmem-xlarge o redis-highmem-2xlarge, establece el umbral en menos de 1 GB.

Situaciones de error de conectividad

En esta sección, se explican los problemas de conectividad que puede tener tu clúster.

Error de conexión causado por reglas de firewall

Si no permites los puertos correctos en tu firewall, es posible que tu clúster encuentre errores de conexión porque el firewall podría bloquear los puertos que usa Memorystore for Redis Cluster.

Para todos los extremos de Private Service Connect de tu clúster, debes permitir el puerto TCP 6379, así como los puertos TCP del 11000 al 13047. Para obtener más información sobre estos extremos, consulta Direcciones de red reservadas.

Error de conexión causado por políticas de la organización

Es posible que tengas una política de la organización que bloquee tus conexiones de Private Service Connect a tu clúster.

Si tu política de la organización usa la política .restrictPrivateServiceConnectProducer, permite la carpeta 961333125034, que es una carpeta específica para Memorystore for Redis Cluster. Por ejemplo:

name: organizations/Consumer-org-1/policies/compute.restrictPrivateServiceConnectProducer
spec:
    rules:
      - values:
          allowedValues:
          - under:folders/961333125034

Si tu política de la organización usa la política .disablePrivateServiceConnectCreationForConsumers, permite SERVICE_PRODUCERS. Por ejemplo:

name: organizations/Consumer-org-1/policies/compute.disablePrivateServiceConnectCreationForConsumers
spec:
    rules:
      - values:
          allowedValues:
          - SERVICE_PRODUCERS

Error de conexión provocado por conexiones que no responden

Te recomendamos que configures tu aplicación cliente para detectar conexiones que no responden a Memorystore for Redis Cluster. Cuando se detecta una conexión que no responde, el cliente debe restablecerla. Para compilar una aplicación resiliente, recomendamos las siguientes configuraciones del cliente:

  • Configura los parámetros de keep-alive de TCP: Establece los parámetros TCP keepalive time, TCP keepalive interval y TCP keepalive probes de modo que los clientes detecten y descarten las conexiones que no responden de forma proactiva, incluso cuando las conexiones estén inactivas. Por ejemplo, si estableces el parámetro TCP keepalive time en 30 segundos, TCP keepalive interval en 10 segundos y TCP keepalive probes en 3, los clientes restablecerán las conexiones inactivas que no responden en un minuto.
  • Configura los tiempos de espera del usuario de TCP: Establece este tiempo de espera en tus clientes para restablecer las conexiones que tienen solicitudes pendientes y dejan de responder. Por ejemplo, si estableces el tiempo de espera en 15 segundos, los clientes restablecerán las conexiones que no responden y que tienen solicitudes pendientes después de 15 segundos.

Situaciones de uso de CPU

En esta sección, se explican los problemas de uso de CPU que podría tener tu clúster.

El búfer de salida de tu clúster se queda sin espacio.

Si el búfer de salida de tu clúster se queda sin espacio, haz lo siguiente:

  • Establece un valor más pequeño para el parámetro maxmemory.
  • Usa la política maxmemory de allkeys-lru.

Cuando la memoria de tu clúster está llena y se produce una nueva escritura, Memorystore for Redis Cluster expulsa claves para dejar espacio para la escritura según la política de maxmemory de tu clúster. La política allkeys-lru expulsa las claves usadas con menor frecuencia (LRU) de todo el conjunto de claves.

Te recomendamos que supervises la maxmemory y la memoria utilizada de tu clúster. Esto te ayuda a saber si tu clúster alcanza la capacidad aprovisionada. Además, si reduces el valor del parámetro maxmemory, obtendrás más espacio para la sobrecarga.

¿Por qué podrían faltar métricas externas para tu clúster?

Si tu clúster experimenta un uso de CPU alto o si los recursos del clúster se agotan (por ejemplo, por tener demasiadas conexiones), es posible que el clúster se comporte de forma incorrecta y que falten métricas externas.

Aísla la fuente de la latencia de tu clúster

Para determinar si la latencia que experimentas se origina en tu clúster, tu aplicación cliente o tu entorno de red, usa la herramienta redis-cli para ejecutar una prueba de latencia continua.

Para aislar la fuente de la latencia de tu clúster, haz lo siguiente:

  1. Conéctate a una VM de Compute Engine que se encuentre en la misma región y red de VPC que tu clúster.

  2. Si aún no está instalada, instala la herramienta redis-cli en tu VM.

    • En el caso de las VMs basadas en Debian o Ubuntu, ejecuta el siguiente comando:

      sudo apt-get install redis-tools
      
    • Para las VMs basadas en RHEL o CentOS, ejecuta el siguiente comando:

      sudo yum install redis
      
  3. Para medir la latencia del clúster en milisegundos, ejecuta el siguiente comando:

    redis-cli --latency -h DISCOVERY_ENDPOINT_ADDRESS -p PORT
    

    Si tu clúster usa encriptado en tránsito, agrega la marca --tls y especifica las autoridades certificadoras (CA) a las que te conectarás.

    Realiza los siguientes reemplazos:

    • DISCOVERY_ENDPOINT_ADDRESS: Es la dirección IP del extremo de detección de tu clúster.
    • PORT: Es el número de puerto reservado para el extremo de detección del clúster. Por lo general, este número de puerto es 6379.
  4. Deja que el comando se ejecute durante unos minutos. La herramienta hace ping al servidor de forma continua y calcula los valores de latencia mínimos, máximos y promedios.

  5. Para detener el comando y ver los resultados, presiona Ctrl+C.

Si el comando genera una latencia promedio constantemente baja (por lo general, 1 milisegundo o menos), el clúster funciona correctamente y responde con rapidez.

Si el comando muestra una latencia constantemente baja, pero tu aplicación cliente sigue experimentando demoras, es posible que los siguientes problemas causen la latencia:

  • Red: El tráfico que se enruta a través de diferentes regiones o zonas entre tu cliente y el clúster puede generar demoras significativas en la red.
  • Cliente: El uso elevado de CPU o memoria en el cliente, los grupos de conexiones agotados o los cuellos de botella de la lógica de la aplicación pueden aumentar el tiempo total de ida y vuelta que experimenta el cliente.

Situaciones de persistencia

En esta sección, se explican los problemas de persistencia que pueden ocurrir con tu clúster.

Tu tráfico de escritura supera la capacidad de Memorystore para Redis Cluster de compactar y recuperar espacio a través de la reescritura de AOF.

Si esto ocurre, el archivo de solo anexar (AOF) crece más rápido de lo que el proceso de reescritura puede administrar. Esto provoca el agotamiento del disco, errores de escritura y bloquea las operaciones que requieren la creación de réplicas y la sincronización completa.

Memorystore for Redis Cluster implementó medidas de protección para regular el rendimiento de escritura. Esto garantiza que la reescritura del AOF pueda seguir el ritmo de las cargas de trabajo de escritura alta sostenidas.