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'cpu
attente se produit lorsqu'un thread est actif CPU ou en attenteCPU.
Rubriques
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.
Rubriques
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
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'CPUUtilization
est, 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 CloudWatchDatabaseConnections
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