cpu - Amazon Aurora

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

cpu

L'événement d'cpuattente se produit lorsqu'un thread est actif CPU ou en attenteCPU.

Versions de moteur prises en charge

Ces informations relatives aux événements d'attente sont prises en charge pour les versions de moteur suivantes :

  • Aurora My SQL versions 2 et 3

Contexte

Pour chaque vCPU, une connexion peut exécuter des travaux sur ce pointCPU. Dans certains cas, le nombre de connexions actives prêtes à être exécutées est supérieur au nombre devCPUs. Ce déséquilibre se traduit par des connexions en attente de CPU ressources. Si le nombre de connexions actives reste constamment supérieur au nombre devCPUs, votre instance est confrontée à des CPU conflits. En cas de contention, l'événement d'attente cpu se produit.

Note

La métrique Performance Insights pour CPU estDBLoadCPU. La valeur de DBLoadCPU peut être différente de la valeur de la CloudWatch métriqueCPUUtilization. Cette dernière métrique est collectée à partir de HyperVisor pour une instance de base de données.

Les métriques du système d'exploitation Performance Insights fournissent des informations détaillées sur CPU l'utilisation. Par exemple, vous pouvez afficher les métriques suivantes :

  • os.cpuUtilization.nice.avg

  • os.cpuUtilization.total.avg

  • os.cpuUtilization.wait.avg

  • os.cpuUtilization.idle.avg

Performance Insights indique l'CPUutilisation par le moteur de base de données sous forme deos.cpuUtilization.nice.avg.

Causes probables de l'allongement des temps d'attente

Lorsque cet événement se produit plus que la normale, indiquant un possible problème de performances, les causes types sont les suivantes :

  • Requêtes analytiques

  • Transactions hautement simultanées

  • Transactions de longue durée

  • Augmentation soudaine du nombre de connexions (tempête de connexions)

  • Augmentation du changement de contexte

Actions

Si l'événement d'attente cpu domine l'activité de la base de données, cela n'indique pas nécessairement un problème de performance. Ne réagissez à cet événement qu'en cas de dégradation des performances.

En fonction de la cause de l'augmentation de CPU l'utilisation, envisagez les stratégies suivantes :

  • Augmentez la CPU capacité de l'hôte. En règle générale, une telle approche n'apporte qu'un soulagement temporaire.

  • Identifiez les requêtes les plus importantes à des fins d'optimisation potentielle.

  • Redirigez certaines charges de travail en lecture seule vers les nœuds de lecture, le cas échéant.

Identifiez les sessions ou les requêtes à l'origine du problème.

Pour trouver les sessions et les requêtes, consultez le SQL tableau Top de Performance Insights pour trouver les SQL instructions les plus CPU chargées. Pour de plus amples informations, veuillez consulter Analyse des métriques à l'aide du tableau de bord de Performance Insights.

En général, une ou deux SQL instructions consomment la majorité des CPU cycles. Concentrez vos efforts sur ces instructions. Supposons que votre instance de base de données en possède 2 vCPUs avec une charge de base de données de 3,1 sessions actives en moyenne (AAS), toutes dans CPU cet état. Dans ce cas, votre instance est CPU liée. Envisagez les stratégies suivantes :

  • Effectuez une mise à niveau vers une classe d'instance plus importante avec plus de fonctionnalitésvCPUs.

  • Ajustez vos requêtes pour réduire la CPU charge de travail.

Dans cet exemple, les principales SQL requêtes ont une charge de base de données de 1,5AAS, toutes dans l'CPUétat. Une autre SQL instruction a une charge de 0,1 dans l'CPUétat. Dans cet exemple, si vous avez arrêté l'SQLinstruction lowest-load, vous ne réduisez pas de manière significative la charge de la base de données. Toutefois, si vous optimisez les deux requêtes à forte charge pour qu'elles soient deux fois plus efficaces, vous éliminez le CPU goulot d'étranglement. Si vous réduisez la CPU charge de 1,5 AAS de 50 %, la charge AAS pour chaque instruction diminue à 0,75. La charge totale de base de données dépensée CPU est désormais de 1,6AAS. Cette valeur est inférieure à la CPU ligne v maximale de 2,0.

Pour une présentation utile du dépannage à l'aide de Performance Insights, consultez le billet de blog Analyze Amazon Aurora My SQL Workloads with Performance Insights. Consultez également l'article de AWS support Comment puis-je résoudre les problèmes liés au CPU taux d'utilisation élevé de mes SQL instances Amazon RDS for My ? .

Analysez et optimisez la CPU charge de travail élevée

Une fois que vous avez identifié la ou les requêtes augmentant CPU l'utilisation, vous pouvez les optimiser ou mettre fin à la connexion. L'exemple suivant montre comment mettre fin à une connexion.

CALL mysql.rds_kill(processID);

Pour de plus amples informations, veuillez consulter mysql.rds_kill.

Si vous mettez fin à une session, l'action peut déclencher une longue restauration.

Suivre les recommandations relatives à l'optimisation des requêtes

Pour optimiser les requêtes, suivez les recommandations ci-dessous :

  • Exécutez l'instruction EXPLAIN.

    Cette commande affiche les étapes individuelles associées à l'exécution d'une requête. Pour plus d'informations, consultez la section Optimisation des requêtes avec EXPLAIN dans la section Ma SQL documentation.

  • Exécutez l'instruction SHOW PROFILE.

    Utilisez cette instruction pour consulter les détails du profil pouvant indiquer l'utilisation des ressources pour les instructions exécutées lors de la session en cours. Pour plus d'informations, consultez la section SHOWPROFILEDéclaration dans la section Ma SQL documentation.

  • Exécutez l'instruction ANALYZE TABLE.

    Utilisez cette instruction pour actualiser les statistiques d'index pour les tables consultées par la requête la plus CPU gourmande. En analysant l'instruction, vous pouvez aider l'optimiseur à choisir un plan d'exécution approprié. Pour plus d'informations, consultez la section ANALYZETABLEDéclaration dans la section Ma SQL documentation.

Suivez les directives pour améliorer l'CPUutilisation

Pour améliorer CPU l'utilisation dans une instance de base de données, suivez les instructions suivantes :

  • Assurez-vous que toutes les requêtes utilisent des index appropriés.

  • Voyez si vous pouvez utiliser des requêtes parallèles Aurora. Vous pouvez utiliser cette technique pour réduire CPU l'utilisation sur le nœud principal en réduisant le traitement des fonctions, le filtrage des lignes et la projection des colonnes pour la WHERE clause.

  • Découvrez si le nombre d'SQLexécutions par seconde atteint les seuils attendus.

  • Découvrez si la maintenance des index ou la création de nouveaux index nécessitent des CPU cycles adaptés à votre charge de travail de production. Planifiez les activités de maintenance en dehors des heures de pointe.

  • Déterminez si vous pouvez utiliser le partitionnement pour réduire l'ensemble de données de requête. Pour plus d'informations, consultez le billet de blog Comment planifier et optimiser Amazon Aurora with My SQL compatibility pour les charges de travail consolidées.

Vérifier la présence de tempêtes de connexions

Si la DBLoadCPU métrique n'est pas très élevée, mais qu'elle l'CPUUtilizationest, la cause de l'CPUutilisation élevée se situe en dehors du moteur de base de données. La tempête de connexions en est l'illustration type.

Vérifiez si les conditions suivantes sont vraies :

  • Il y a une augmentation à la fois de la CPUUtilization métrique Performance Insights et de la CloudWatch DatabaseConnections métrique Amazon.

  • Le nombre de fils dans le CPU est supérieur au nombre devCPUs.

Si les conditions précédentes sont vraies, envisagez de diminuer le nombre de connexions à la base de données. Par exemple, vous pouvez utiliser un pool de connexions tel que RDS Proxy. Pour découvrir les meilleures pratiques en matière de gestion et de dimensionnement efficaces des connexions, consultez le livre blanc Amazon Aurora My SQL DBA Handbook for Connection Management.