Résoudre des problèmes

Cette page décrit différents scénarios d'erreur et fournit des conseils pour résoudre ces erreurs.

Scénarios de réplication

Cette section décrit les problèmes de réplication qui peuvent survenir avec votre instance.

Comment surveiller les retards de réplication ?

Memorystore pour Valkey dispose de la métrique /instance/replication/maximum_offset_diff. Cette métrique surveille la différence maximale de décalage de réplication (en octets) pour un nœud dans une instance principale.

En maintenant une faible différence de décalage de réplication, les instances répliquées peuvent effectuer des opérations de synchronisation incrémentielle plus fréquemment et à moindre coût que les opérations de synchronisation complète.

Nous vous recommandons de définir un seuil pour la métrique maximum_offset_diff. Si le seuil est dépassé, Memorystore pour Valkey peut vous envoyer une alerte.

En fonction du type de nœud de votre instance, nous vous recommandons de définir le seuil comme suit :

  • Si le type de nœud est shared-core-nano, custom-pico, custom-micro, custom-mini, standard-small, highmem-medium, highcpu-medium ou standard-large, définissez le seuil sur une valeur inférieure à 64 Mo.

  • Si le type de nœud est highmem-xlarge ou highmem-2xlarge, définissez le seuil sur une valeur inférieure à 1 Go.

Que faire en cas de retard de réplication entre votre instance principale et ses instances répliquées ?

Un retard de réplication important peut se produire si l'instance principale comporte trop d'opérations d'écriture et que les instances répliquées ne parviennent pas à rattraper leur retard pour répliquer ces opérations. Pour résoudre ce problème, nous vous recommandons de faire évoluer la capacité de l'instance en augmentant le nombre de fragments pour l'instance.

Scénarios d'utilisation du processeur

Cette section décrit les problèmes d'utilisation du processeur que votre instance peut rencontrer.

Que faire si le tampon de sortie de votre instance manque d'espace ?

Si le tampon de sortie de votre instance Memorystore pour Valkey manque d'espace, procédez comme suit :

  • Définissez une valeur plus petite pour le maxmemory paramètre.
  • Utilisez la allkeys-lru maxmemory règle.

Lorsque la mémoire de votre instance est saturée et qu'une nouvelle écriture arrive, Memorystore pour Valkey supprime les clés conformément à la règle maxmemory de l'instance afin de libérer de l'espace pour l'écriture. La règle allkeys-lru supprime les clés les moins récemment utilisées (LRU, least recently used) de la collection de clés.

Nous vous recommandons de surveiller la maxmemory et la mémoire utilisée de votre instance. Cela vous permet de savoir si votre instance atteint la capacité d'instance provisionnée. De plus, en réduisant la valeur du paramètre maxmemory, vous obtenez plus d'espace pour la surcharge.

Pourquoi des métriques externes peuvent-elles manquer pour votre instance ?

Si votre instance présente une utilisation élevée du processeur ou si ses ressources sont épuisées (par exemple, en raison d'un nombre trop élevé de connexions), elle peut se comporter de manière anormale et des métriques externes peuvent manquer.

Comment isoler la source de la latence de votre instance ?

Pour déterminer si la latence que vous rencontrez provient de votre instance, de votre application cliente ou de votre environnement réseau, utilisez l'outil valkey-cli pour exécuter un test de latence continu.

Pour isoler la source de la latence de votre instance, procédez comme suit :

  1. Connectez-vous à une VM Compute Engine située dans la même région et le même réseau VPC que votre instance.

  2. S'il n'est pas déjà installé, installez l'outil valkey-cli sur votre VM.

    • Pour les VM basées sur Debian ou Ubuntu, exécutez la commande suivante :

      sudo apt-get install valkey-tools
      
    • Pour les VM basées sur RHEL ou CentOS, exécutez la commande suivante :

      sudo yum install valkey-tools
      
  3. Pour mesurer la latence de l'instance en millisecondes, exécutez la commande suivante :

    redis-cli --latency -h ENDPOINT_ADDRESS -p PORT
    

    Si votre instance utilise le chiffrement en transit, ajoutez l'option --tls et spécifiez vos autorités de certification (CA) pour vous connecter.

    Effectuez les remplacements suivants :

    • ENDPOINT_ADDRESS : adresse IP du point de terminaison de votre instance.
    • PORT : numéro de port réservé au point de terminaison de votre instance. En règle générale, ce numéro de port est 6379.
  4. Laissez la commande s'exécuter pendant quelques minutes. L'outil envoie un ping continu au serveur et calcule les valeurs de latence minimale, maximale et moyenne.

  5. Pour arrêter la commande et afficher les résultats, appuyez sur Ctrl+C.

Si la commande génère une latence moyenne constamment faible (généralement 1 milliseconde ou moins), l'instance est saine et répond rapidement.

Si la commande affiche une latence constamment faible, mais que votre application cliente rencontre toujours des retards, les problèmes suivants peuvent être à l'origine de la latence :

  • Réseau : le trafic acheminé entre votre client et l'instance dans différentes régions ou zones peut entraîner des retards réseau importants.
  • Client : une utilisation élevée du processeur ou de la mémoire sur le client, des pools de connexions épuisés ou des goulots d'étranglement dans la logique de l'application peuvent augmenter le délai aller-retour total que le client rencontre.

Scénarios de gestion de la mémoire

Cette section décrit les problèmes de gestion de la mémoire que votre instance peut rencontrer.

Quelle métrique pouvez-vous utiliser pour déterminer que votre instance est sous pression au niveau de la mémoire ?

Pour surveiller l'utilisation de la mémoire d'une instance Memorystore pour Valkey, nous vous recommandons d'afficher la métrique /instance/memory/maximum_utilization. Si l'utilisation de la mémoire de l'instance approche les 80% et que vous prévoyez une augmentation de la consommation des données, alors faites évoluer la taille de l'instance pour améliorer les performances et libérer de l'espace pour les nouvelles données.

Scénarios de surveillance

Cette section décrit les problèmes de surveillance que votre instance peut rencontrer.

Comment configurer des alertes pour Memorystore pour Valkey ?

Vous pouvez utiliser Cloud Monitoring pour définir des alertes qui vous avertissent si des métriques dépassent les seuils que vous avez définis pour votre instance. Pour en savoir plus sur la configuration d'alertes dans Cloud Monitoring, consultez la section Définir une alerte Monitoring pour l'utilisation de la mémoire.

Scénarios de gestion des connexions

Cette section décrit les problèmes de gestion des connexions que votre instance peut rencontrer.

Que faire si vous atteignez votre limite de connexions ou si vous recevez un délai d'attente de connexion ?

Lorsque vous atteignez votre limite de connexions, votre client ne parvient pas à se connecter à votre serveur. C'est ce qu'on appelle un refus de connexion.

Dans ce cas, procédez comme suit :

  • Utilisez la métrique /instance/node/stats/rejected_connections_count pour déterminer le nombre de connexions que Memorystore pour Valkey refuse, car le nœud de l'instance atteint la limite maximale de clients.
  • Utilisez la métrique /instance/node/clients/connected_clients pour déterminer le nombre de clients connectés au nœud de l'instance. Vous pouvez ainsi voir si tous les nœuds de l'instance sont en dessous de la limite.
  • Arrêtez les connexions qui ont fuité ou qui ne sont pas souhaitées à l'aide de la client kill commande.
  • Réduisez le nombre de connexions ou la taille du pool dans l'application cliente. Pour en savoir plus, consultez la documentation associée à l'application cliente.
  • Ajustez la limite maximale de clients. Pour en savoir plus, consultez la section Configurer une instance.
  • Faites évoluer votre instance vers un type de nœud plus grand afin qu'elle dispose d'une limite de connexions plus élevée.

Scénarios de délai avant expiration

Cette section décrit les problèmes de délai avant expiration que votre instance peut rencontrer.

Que faire si vous recevez un délai avant expiration d'E/S ?

Lorsqu'une opération de lecture ou d'écriture dans Memorystore pour Valkey ne parvient pas à se terminer dans un délai spécifié, un délai avant expiration d'E/S se produit. Ce délai avant expiration peut se produire pour différentes raisons. Par exemple, un ou plusieurs nœuds de votre instance peuvent être surchargés.

Si vous recevez un délai avant expiration d'E/S, procédez comme suit :

Scénarios d'erreur de connectivité

Cette section décrit les problèmes de connectivité que votre instance peut rencontrer.

Erreur de connexion causée par des règles de pare-feu

Les règles de pare-feu peuvent entraîner des erreurs de connexion en bloquant les ports utilisés par Memorystore pour Valkey. Vous devez autoriser tous les ports pour les deux points de terminaison Private Service Connect de votre instance. Pour en savoir plus sur les points de terminaison, consultez la section Adresses réseau réservées.

Erreur de connexion causée par des règles d'administration

Vous pouvez avoir une règle d'administration qui bloque vos connexions Private Service Connect à votre instance Memorystore pour Valkey.

Si votre règle d'administration utilise la règle .restrictPrivateServiceConnectProducer, autorisez le numéro de dossier 672235397475, qui est un dossier spécifiquement destiné à Memorystore pour Valkey. Exemple :

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

Si votre règle d'administration utilise la règle .disablePrivateServiceConnectCreationForConsumers, autorisez SERVICE_PRODUCERS. Exemple :

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

Erreur de connexion causée par des connexions qui ne répondent pas

Nous vous recommandons vivement de configurer votre application cliente pour détecter les connexions qui ne répondent pas à Memorystore pour Valkey. Lorsqu'une connexion qui ne répond pas est détectée, le client doit la réinitialiser. Pour créer une application résiliente, nous vous recommandons les configurations client suivantes :

  • Configurer les paramètres de message keep-alive TCP : définissez les paramètres TCP keepalive time, TCP keepalive interval et TCP keepalive probes afin que les clients détectent et abandonnent de manière proactive les connexions qui ne répondent pas, même lorsqu'elles sont inactives. Par exemple, si vous définissez le paramètre TCP keepalive time sur 30 secondes, TCP keepalive interval sur 10 secondes et TCP keepalive probes sur 3, les clients réinitialisent les connexions inactives qui ne répondent pas en une minute.
  • Configurer les délais avant expiration des utilisateurs TCP : définissez ce délai avant expiration dans vos clients pour réinitialiser les connexions qui ont des requêtes en attente et qui cessent de répondre. Par exemple, si vous définissez le délai avant expiration sur 15 secondes, les clients réinitialisent les connexions qui ne répondent pas et qui ont des requêtes en attente après 15 secondes.

Gérer les erreurs pour les instances avec le mode cluster désactivé

  • Si l'application se connecte au point de terminaison en lecture d'une instance qui ne comporte pas d'instances répliquées avec accès en lecture, la connexion se ferme et le message d'erreur ERR no replicas found s'affiche. Dans ce cas, essayez de connecter l'application au point de terminaison principal ou ajoutez des instances répliquées avec accès en lecture à l'instance.

  • En cas de basculement, les connexions existantes de votre application se ferment et le message d'erreur ERR role change occurred s'affiche. Ce message d'erreur s'affiche également si votre application se connecte au point de terminaison en lecture d'une instance et que toutes les instances répliquées avec accès en lecture de l'instance échouent. Dans ce cas, l' application doit réessayer la connexion avec un intervalle exponentiel entre les tentatives.

Scénarios de persistance

Cette section décrit les problèmes de persistance qui peuvent survenir avec votre instance.

Votre trafic d'écriture dépasse la capacité de Memorystore pour Valkey à compacter et à récupérer de l'espace via la réécriture AOF

Dans ce cas, le fichier AOF (Append-Only File) croît plus rapidement que le processus de réécriture ne peut le gérer. Cela entraîne une saturation du disque, des échecs d'écriture et bloque les opérations qui nécessitent la création d'une instance répliquée et une synchronisation complète.

Memorystore pour Valkey a implémenté des garde-fous pour réguler le débit d'écriture. Cela garantit que la réécriture AOF peut suivre le rythme des charges de travail à écriture élevée et soutenue.