Résoudre les problèmes liés aux requêtes de pool de lecture

Pour examiner et déboguer les requêtes qu'AlloyDB pour PostgreSQL achemine vers une instance de pool de lecture, vous pouvez utiliser les techniques de diagnostic suivantes :

  • Affichez la liste détaillée des nœuds d'un pool de lecture, y compris leurs adresses IP.
  • Connectez-vous directement à un nœud de pool de lecture individuel pour le débogage.
  • Examinez les journaux AlloyDB pour identifier le nœud qui gère une requête spécifique.
  • Interrogez les journaux pour obtenir toutes les activités récentes d'un nœud de pool de lecture spécifique.
  • Affichez les métriques Google Cloud associées à un nœud de pool de lecture.

Utilisées ensemble, ces techniques vous permettent d'accéder aux diagnostics et au débogage de vos pools de lecture. Par exemple, si l'un des pools de lecture de votre cluster utilise une quantité inhabituelle de processeur lors du traitement d'une requête de longue durée, ces techniques vous permettent de déterminer quel nœud gère cette requête, puis de vous connecter directement à ce nœud pour examiner plus en détail ou arrêter la requête.

Lister les détails des nœuds d'un pool de lecture

Dans le cadre d'une utilisation normale d'AlloyDB, vous n'avez pas besoin de connaître les identités ni les adresses des nœuds qui composent vos pools de lecture. Toutefois, si nécessaire, vous pouvez afficher la liste des nœuds d'une instance de pool de lecture. Chaque nœud répertorié inclut les informations suivantes, utiles pour les diagnostics et le débogage ultérieurs :

Pour afficher les chaînes d'ID internes et les adresses IP des nœuds d'un pool de lecture, suivez les instructions spécifiques à gcloud sur la page Afficher les détails d'une instance, mais ajoutez un argument de ligne de commande --view=FULL supplémentaire :

gcloud

gcloud alloydb instances describe READ_POOL_ID \
 --region=REGION_ID \
 --cluster=CLUSTER_ID \
 --project=PROJECT_ID \
 --view=FULL

Remplacez les éléments suivants :

  • READ_POOL_ID : ID du pool de lecture.
  • REGION_ID : identifiant de la région de l'instance.
  • CLUSTER_ID : ID du cluster de l'instance.
  • PROJECT_ID : ID du projet de l'instance.

Le résultat inclut une section intitulée nodes, qui ressemble à ceci :

nodes:
- id: READ_POOL_INSTANCE_ID-edd4f6ed-hcfh
  ip: 10.90.80.57
  state: HEALTHY
  zoneId: us-central1-b
- id: READ_POOL_INSTANCE_ID-edd4f6ed-ldbm
  ip: 10.90.80.56
  state: HEALTHY
  zoneId: us-central1-c

Les champs id et ip de chaque entrée sont particulièrement pertinents pour les autres techniques décrites sur cette page :

  • Le champ ip indique l'adresse IP du nœud dans le VPC du cluster.

  • Le champ id contient la chaîne d'ID Google Cloud complète du nœud. Seuls les quatre derniers caractères de cette chaîne apparaissent dans les entrées de journal d'un nœud.

    Par exemple, pour rechercher les entrées de journal impliquant le premier des deux nœuds de l'exemple de résultat précédent, interrogez les journaux à l'aide de la chaîne d'ID hcfh.

Se connecter directement à un nœud

Une fois que vous connaissez l'adresse IP d'un nœud, vous pouvez vous connecter directement à son serveur PostgreSQL. Par exemple, pour utiliser psql afin de vous connecter à une VM dans le VPC de votre cluster, suivez les instructions de la section Exécuter le client psql. Dans ce cas, indiquez l'adresse IP du nœud plutôt que celle de son instance de pool de lecture :

psql -h NODE_IP_ADDRESS -U USERNAME

Rechercher l'activité des nœuds dans les journaux

AlloyDB inclut les ID de nœud dans les entrées de journal concernant les requêtes traitées par les pools de lecture. En règle générale, vous pouvez utiliser ces ID découverts de deux manières :

  • Déterminez l'adresse IP de ce nœud pour pouvoir vous y connecter.
  • Effectuez d'autres requêtes de journaux pour en savoir plus sur l'activité récente du nœud.

Déterminer quel nœud gère une requête connue

Si vous savez qu'un certain pool de lecture traite une requête de longue durée, l'explorateur de journaux peut vous aider à déterminer l'ID du nœud spécifique qui gère cette requête.

Notez que cette technique ne fonctionne que sur les instances de pool de lecture sur lesquelles l'extension pgAudit est activée.

  1. Accédez à l'explorateur de journaux :

    Accéder à l'explorateur de journaux

  2. Dans le générateur de requêtes, ajoutez resource.labels.instance_id="READ_POOL_ID" au champ de l'éditeur de requête, en remplaçant READ_POOL_ID par le nom de votre instance de pool de lecture.

  3. Ajoutez l'instruction SQL que vous examinez, en tout ou en partie, au champ de l'éditeur de requête. Exemple : select id from MyTable. Cette entrée n'est pas sensible à la casse.

  4. Cliquez sur Exécuter la requête.

  5. Utilisez les commandes de l'explorateur de journaux pour ajuster et réexécuter la requête si nécessaire afin de filtrer les résultats et de ne conserver que les plus pertinents.

  6. Cliquez sur une entrée de journal dans la liste des résultats pour développer son affichage.

  7. Cliquez sur le champ labels dans l'affichage développé de l'entrée.

  8. Notez la valeur de NODE_ID sous labels.

Le résultat est l'identifiant à quatre caractères du nœud qui gère la requête.

Se connecter à un nœud mentionné dans une entrée de journal

Si vous souhaitez vous connecter directement au serveur PostgreSQL d'un nœud particulier en fonction de son activité enregistrée, procédez comme suit :

  1. Notez la chaîne d'ID à quatre caractères du nœud consigné. Vous trouverez cet ID dans le champ NODE_ID de l'entrée de journal.

  2. Répertoriez les nœuds du pool de lecture.

  3. Dans cette liste, recherchez un nœud dont la chaîne d'ID se termine par les quatre caractères que vous avez notés à la première étape. Il est possible qu'aucun des nœuds listés ne corresponde.

  4. Si vous trouvez un nœud correspondant, utilisez son adresse IP correspondante pour vous connecter au serveur PostgreSQL de ce nœud.

    Sinon, si aucun des nœuds du pool de lecture listés à l'étape précédente ne possède d'ID correspondant au nœud consigné, le pool de lecture a mis hors service ce nœud depuis l'entrée de journal d'origine. Ce comportement est normal pour les pools de lecture AlloyDB, comme décrit dans Remarque sur l'éphémérité des nœuds. Dans ce cas, vous ne pouvez pas établir de connexion directe à ce nœud.

Une fois que vous êtes connecté au serveur PostgreSQL d'un nœud, vous pouvez utiliser des techniques de surveillance PostgreSQL standards, telles que pg_stat_activity, pour examiner plus en détail les processus actuels du nœud et les ajuster si nécessaire.

Afficher plus d'entrées de journal concernant un nœud

Pour afficher l'activité enregistrée plus récemment concernant un nœud avec un ID spécifique :

  1. Accédez à l'explorateur de journaux :

    Accéder à l'explorateur de journaux

  2. Ajoutez labels.NODE_ID=NODE_ID au générateur de requêtes de l'explorateur de journaux, en remplaçant NODE_ID par la chaîne d'ID à quatre caractères du nœud.

  3. Cliquez sur Exécuter la requête pour afficher toutes les activités de ce nœud au cours de la période sélectionnée, ou affinez la requête pour la filtrer davantage.

  4. Répétez l'étape précédente si nécessaire pour affiner votre recherche.

Surveiller les métriques de nœud

Vous pouvez afficher les métriques associées à des nœuds individuels à partir du tableau de bord des insights système AlloyDB. Pour en savoir plus sur les métriques de nœud disponibles, consultez la documentation de référence sur les métriques System Insights.

Pour savoir quels ID de nœud sont associés à une instance de pool de lecture particulière, consultez Répertorier les détails des nœuds d'un pool de lecture.

Pour obtenir la documentation de référence complète sur ces métriques et d'autres métriques AlloyDB, consultez alloydb dans "MétriquesGoogle Cloud ".

Remarque sur le caractère éphémère des nœuds

Bien que vous puissiez vous connecter en toute sécurité à un nœud à des fins d'investigation ou de débogage temporaires, les applications qui utilisent des pools de lecture doivent toujours se connecter à ces pools au niveau de l'instance, en utilisant l'adresse IP que son cluster affiche dans sa liste d'instances.

AlloyDB traite les nœuds de ses pools de lecture comme des ressources éphémères et interchangeables. Le service modifie la liste des nœuds d'un pool de lecture aussi souvent que nécessaire afin de maintenir l'équilibrage de charge et la réactivité de cette instance de pool de lecture. Une application qui se connecte directement à un nœud de pool de lecture, plutôt qu'à une instance de pool de lecture, risque de se déconnecter brusquement de votre base de données chaque fois qu'AlloyDB met à jour la liste des nœuds de l'instance.

Laissez toujours vos applications se connecter à vos pools de lecture au niveau de l'instance et laissez AlloyDB se charger d'acheminer efficacement vos requêtes vers les nœuds appropriés.

Étapes suivantes