Comment résoudre les problèmes et une utilisation intensive du CPU sur mes instances DocumentDB ?
Date de la dernière mise à jour : 17/06/2020
Je fais face à une utilisation intensive du CPU sur mes instances Amazon DocumentDB (avec compatibilité MongoDB). Comment résoudre une utilisation intensive du CPU ?
Brève description
L'utilisation du CPU sur vos instances Amazon DocumentDB peut augmenter pour les raisons suivantes :
- Charges de travail lourdes lancées par l'utilisateur
- Requêtes non efficaces
- Exploitation du rédacteur ou de l'instance de base de données spécifique dans le cluster au lieu de l'équilibrage de la charge au sein du cluster.
Utilisez les ressources suivantes pour résoudre les problèmes de performances du CPU :
- Pour déterminer pourquoi une instance de base de données s'exécute lentement, consultez Comment déterminer pourquoi un système s'exécute lentement soudainement ?
- Pour identifier et arrêter les requêtes de longue durée sur une instance de base de données, consultez Comment rechercher les requêtes de longue durée ou bloquées, et les arrêter ?
- Pour vérifier si une requête progresse, consultez Comment savoir quand une requête progresse ?
- Pour déterminer pourquoi une requête prend beaucoup de temps à s'exécuter, consultez Comment afficher un plan de requête et optimiser une requête ?
Solution
Fractionner une charge de travail à l'aide de replicaSet
Si vous avez un cluster DocumentDB avec plusieurs instances de base de données, vérifiez si l'utilisation du CPU du rédacteur est élevée et si les lecteurs restent inactifs. Si c'est le cas, le rédacteur est surchargé.
Pour résoudre ce problème, fractionnez la charge de travail à l'aide de replicaSet ou utilisez plusieurs groupes de connexions pour acheminer les requêtes de lecture vers les instances de base de données du lecteur.
Spécifier le readPreference pour votre connexion
Lorsque vous vous connectez en tant qu'ensemble de réplicas, vous pouvez spécifier readPreference pour la connexion. Si vous spécifiez une préférence de lecture de secondaryPreferred, le client achemine les requêtes de lecture vers vos réplicas et écrit les requêtes vers votre instance de base de données principale. L'exemple suivant montre la chaîne de connexion dans Python :
## Create a MongoDB client, open a connection to Amazon DocumentDB as a
## replica set and specify the read preference as secondary preferred
Remarque : les lectures à partir d'un réplica en lecture sont cohérentes à terme.
Ajouter une ou plusieurs instances de lecteur au cluster
Si vous avez un cluster DocumentDB avec une seule instance de base de données (rédacteur uniquement), ajoutez une ou plusieurs instances de base de données de lecteur au cluster. Ensuite, utilisez readPreference=secondaryPreferred pour gérer la charge efficacement.
Utiliser Profiler pour identifier les requêtes lentes
Si la charge est répartie uniformément entre tous les réplicas, utilisez Profiler pour identifier les requêtes lentes au fil du temps.
Augmenter la classe d'instance de vos instances de base de données
Vous pouvez également augmenter la classe d'instance des instances de base de données du cluster DocumentDB pour gérer la charge de travail.
Remarque : augmenter la classe d'instance augmente le coût. Pour plus d'informations, consultez la tarification de DocumentDB.
Informations connexes
Cet article vous a-t-il été utile ?
Cette page peut-elle être améliorée ?
Vous avez besoin d'aide ?