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, si la base de données ralentit ou se bloque), les métriques standards peuvent ne pas suffire à déterminer la cause première. La capture des performances résout ce problème en enregistrant 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 liste des exemples de cas d'utilisation de la capture des performances après l'avoir 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'indiquent qu'une baisse des requêtes par seconde (RPS) et une augmentation des 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émaphore, ce qui identifie une contention 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 au niveau 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 grand nombre 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 sur sa source de manière significative.

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

Gérer les transactions de longue durée

Problème : Une requête utilisateur ou un job par lot s'exécute pendant une durée excessive, ce qui bloque les verrous.

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 investigations.

Comment les données sur les performances sont-elles collectées ?

La capture des performances fonctionne comme un service basé sur des agents qui surveillent 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 analyse la configuration de votre base de données pour lire les déclencheurs que vous avez définis. L'agent sonde 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 actuel 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 de vérifications. Par exemple, l'agent peut déclencher une capture des performances s'il détecte que le nombre de threads est élevé pour trois probes 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 en entrées de journal et envoyées directement à Cloud Logging du projet pour l'instance Cloud SQL, dans 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 : déclencheurs pour les répliques lorsque le décalage 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écalage de la réplique 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.

Période d'attente après une capture de performances

Pour éviter une journalisation excessive et une surcharge du système lors d'un événement de performances soutenu, la capture des performances implémente une période de refroidissement de 30 minutes après une capture d'instantané réussie. Cette période de refroidissement est automatiquement activée 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

  • Pour utiliser la capture des performances, vous devez activer les insights sur les requêtes. 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.

Étapes suivantes