Utiliser les métriques pour diagnostiquer la latence

Cette page décrit les métriques de latence fournies par Spanner. Si votre application présente une latence élevée, ces métriques peuvent vous aider à diagnostiquer et à résoudre le problème.

Vous pouvez consulter ces métriques dans la console Google Cloud et dans la console Cloud Monitoring.

Présentation des métriques de latence

Les métriques de latence pour Spanner mesurent le temps nécessaire Service Spanner pour traiter une requête. Cette métrique capture la valeur réelle le temps écoulé, et non le temps CPU utilisé par Spanner pour différentes utilisations.

Ces métriques de latence n'incluent pas la latence se produisant en dehors Spanner, comme la latence du réseau ou la latence dans votre application couche de données. Pour mesurer d'autres types de latence, vous pouvez utiliser Cloud Monitoring de sorte à instrumenter votre application avec des métriques personnalisées.

Vous pouvez afficher les graphiques des métriques de latence dans la console Google Cloud et dans la Console Cloud Monitoring. Vous pouvez afficher des métriques de latence combinées qui incluent à la fois des opérations de lecture et d'écriture, ou vous pouvez afficher ces opérations dans des métriques distinctes.

En fonction de la latence de chaque requête, Spanner les regroupe dans centiles. Vous pouvez afficher les métriques de latence pour la latence des 50e et 99e centiles :

  • Latence du 50e centile : latence maximale, exprimée en secondes, pour les 50 % de requêtes les plus rapides. Par exemple, si la latence du 50e centile est de 0,5 seconde, Spanner a alors traité 50% des requêtes en moins de 0,5 seconde.

    Cette métrique est parfois appelée latence médiane.

  • Latence du 99e centile : latence maximale, exprimée en secondes, pour les 99 % de requêtes les plus rapides. Par exemple, si la latence du 99e centile est de 2 secondes, Spanner a traité 99% des requêtes en moins de deux secondes.

Latence et opérations par seconde

Lorsqu'une instance traite un petit nombre de requêtes au cours d'une période donnée, les latences des 50e et 99e centiles pendant cette période ne sont pas des indicateurs significatifs des performances globales de l'instance. Dans ces conditions, un nombre très faible d'anomalies peut modifier radicalement les métriques de latence.

Par exemple, supposons qu'une instance traite 100 requêtes pendant une heure. Dans ce cas, la latence du 99e centile de l'instance au cours de cette heure correspond au temps nécessaire au traitement de la requête la plus lente. Une métrique de latence basée sur une seule requête n'est pas représentative.

Diagnostic des problèmes de latence

Dans les sections suivantes, nous allons voir comment diagnostiquer plusieurs problèmes courants susceptibles de générer une latence élevée de bout en bout sur votre application.

Pour obtenir un aperçu rapide des métriques de latence d'une instance, utilisez le console Google Cloud. Pour examiner les métriques plus en détail et trouver des corrélations entre la latence et d'autres métriques, utilisez la console Cloud Monitoring.

Latence totale élevée, faible latence Spanner

Si votre application subit une latence plus élevée que prévu, mais que la les métriques de latence pour Spanner sont nettement inférieures de bout en bout, il peut y avoir un problème dans le code de votre application. Si votre application présente un problème de performances qui ralentit certains chemins de code, la latence totale de bout en bout peut augmenter pour chaque requête.

Pour détecter ce problème, analysez votre application afin d'identifier les chemins de code qui sont plus lents que prévu.

Vous pouvez également mettre en commentaire le code qui communique avec Spanner, puis de mesurer à nouveau la latence totale. Si la latence totale ne change pas beaucoup, il est peu probable que Spanner soit la cause de la latence élevée.

Latence totale élevée, latence élevée de Spanner

Si votre application subit une latence plus élevée que prévu et que Les métriques de latence de Spanner sont également élevées. Cela peut être dû à plusieurs causes:

  • Votre instance nécessite davantage de capacité de calcul. Si votre instance ne dispose pas de suffisamment ressources de processeur et leur utilisation dépasse les exigences maximale, il est possible que Spanner ne puisse pas traiter vos requêtes rapidement et efficacement.

  • Certaines de vos requêtes entraînent une utilisation élevée du processeur. Si vos requêtes ne tirer parti des fonctionnalités de Spanner qui améliorent l'efficacité, telles que paramètres de requête et index secondaires, ou s'ils incluent un grand nombre de jointures ou d'autres utilisations intensives les requêtes peuvent utiliser une grande partie des ressources de processeur Compute Engine.

Pour analyser ces problèmes, utilisez la console Cloud Monitoring afin de trouver une corrélation entre une utilisation intensive du processeur et une latence élevée. En outre, analysez les métriques de requête de votre instance afin d'identifier toute requête nécessitant une utilisation intensive du processeur au cours de la même période.

Si vous constatez que l'utilisation du processeur et la latence sont toutes les deux élevées, prenez les mesures nécessaires pour résoudre le problème :

  • Si vous avez trouvé peu de requêtes nécessitant une utilisation intensive du processeur, ajoutez de la capacité de calcul à l'instance.

    L'ajout de capacité de calcul permet de disposer de plus de ressources de processeur et d'activer Spanner pour gérer une charge de travail plus importante.

  • Si vous avez trouvé des requêtes nécessitant une utilisation intensive du processeur, consultez la page sur l'exécution des requêtes pour savoir pourquoi les requêtes sont lentes, puis mettez à jour vos requêtes afin de suivre les bonnes pratiques SQL pour Spanner.

    Vous devrez peut-être également examiner la conception du schéma de la base de données et mettre à jour le schéma afin de permettre l'optimisation des requêtes.

Étape suivante