Présentation de la capture des performances Cloud SQL

La capture des performances de Cloud SQL pour MySQL vous aide à diagnostiquer et à résoudre les problèmes de performances complexes et temporaires dans votre base de données MySQL.

Lorsque les performances de votre instance se dégradent, par exemple en cas de ralentissement ou de blocage de la base de données, les métriques standards peuvent ne pas suffire à déterminer la cause première. La capture des performances résout ce problème en capturant des instantanés détaillés et ponctuels de la base de données au moment où un problème est détecté. Vous pouvez utiliser des déclencheurs configurables pour prendre des instantanés à l'échelle du système lorsque des problèmes temporaires se produisent et pour détecter les transactions de longue durée.

Exemples de cas d'utilisation

Cette section présente des exemples de cas d'utilisation de la capture des performances une fois que vous l'avez activée pour votre instance.

Diagnostiquer un blocage de base de données

Problème : une instance ne répond plus depuis plusieurs minutes, mais les métriques n'affichent qu'une baisse du nombre de requêtes par seconde (RPS) et une augmentation du nombre de connexions.

Exemple d'utilisation : définissez un déclencheur de seuil à l'aide de runningThreadsThreshold. Le journal de capture des performances révèle un nombre élevé d'attentes de sémaphores, ce qui identifie un conflit de mutex spécifique (par exemple, sur l'index de hachage adaptatif) comme cause première.

Analyser la dégradation des requêtes

Problème : les performances des requêtes se dégradent soudainement à l’échelle du système.

Exemple d'utilisation : le journal de capture des performances révèle une seule transaction de longue durée qui a accumulé un nombre considérable de journaux d'annulation. Le journal identifie la transaction de longue durée, l'utilisateur et le texte de la requête.

Examiner le délai de réplication

Problème : une instance répliquée avec accès en lecture est en retard par rapport à sa source.

Exemple d'utilisation : vous configurez un seuil de déclencheur élevé pour secondsBehindSourceThreshold. Vous pouvez consulter le journal de capture des performances pour identifier le GTID spécifique à l'origine du délai.

Gérer les transactions de longue durée

Problème : une job par lot ou une requête utilisateur s'exécute pendant une durée excessive, ce qui entraîne des verrouillages.

Exemple d'utilisation : vous configurez un déclencheur de seuil pour transactionDurationThreshold. Le journal de capture des performances identifie la transaction qui dépasse le seuil. Vous pouvez utiliser ces informations pour effectuer des recherches.

Comment les données de performances sont-elles capturées ?

La capture des performances fonctionne comme un service basé sur un agent qui surveille votre instance. Lorsque vous activez la capture des performances, votre instance Cloud SQL effectue les opérations suivantes pour capturer les données de performances :

  1. L'agent examine la configuration de votre base de données pour lire les déclencheurs que vous avez définis. Il examine ensuite les métriques de votre base de données à un intervalle configurable, qui est défini sur 30 secondes par défaut.

  2. Si un problème est détecté et que le seuil d'un déclencheur a été dépassé, l'agent continue de comparer l'état en direct de la base de données à vos règles. Pour éviter les fausses alertes dues à des pics temporaires, l'agent ne déclenche une capture complète des performances que s'il détecte le problème pour un nombre consécutif d'examens. Par exemple, l'agent peut déclencher une capture des performances s'il détecte que le nombre de threads est élevé pour trois examens consécutifs.

  3. Lorsqu'une capture des performances est déclenchée, l'agent se connecte à la base de données et exécute une série de commandes de diagnostic pour capturer un instantané détaillé.

  4. Les informations capturées sont mises en forme dans des entrées de journal et envoyées directement à Cloud Logging du projet pour l'instance Cloud SQL sous un flux de journaux spécifique nommé mysql-performance-capture.log.

Déclencheurs configurables

Vous pouvez configurer les déclencheurs suivants pour la capture des performances :

  • runningThreadsThreshold: se déclenche lorsque le nombre de threads actifs exécutés sur une instance principale dépasse la valeur spécifiée. Par exemple, vous pouvez configurer le seuil pour exécuter la capture des performances si le nombre de threads actifs en cours d'exécution dépasse 100.

  • secondsBehindSourceThreshold: se déclenche pour les instances répliquées lorsque le délai de réplication dépasse le nombre de secondes spécifié. Par exemple, vous pouvez configurer le seuil pour exécuter la capture des performances si le délai de l'instance répliquée avec accès en lecture est supérieur à 300 secondes.

  • transactionDurationThreshold: déclenche la journalisation des transactions individuelles qui s'exécutent plus longtemps que la durée spécifiée. Par exemple, vous pouvez configurer le déclencheur pour enregistrer toute transaction unique qui s'exécute pendant plus de 10 minutes.

Délai de refroidissement après une capture des performances

Pour éviter une journalisation excessive et une surcharge du système lors d'un événement de performances prolongé, la capture des performances implémente un délai de refroidissement de 30 minutes après une capture d'instantané réussie. Ce délai de refroidissement est automatiquement activé pour empêcher l'agent de déclencher de nouvelles captures redondantes lorsque le système est dans un état de problème prolongé.

Tarifs

La capture des performances stocke les journaux dans Cloud Logging, ce qui peut entraîner des coûts de stockage supplémentaires.

Pour en savoir plus sur les tarifs de stockage des journaux dans Logging, consultez Tarifs.

Limites

  • Vous devez activer les insights sur les requêtes pour utiliser la capture des performances. Si vous désactivez les insights sur les requêtes, vous désactivez également la capture des performances.
  • La capture des performances n'est disponible que pour Cloud SQL pour MySQL 5.7 et versions ultérieures.

Étape suivante