Extraire les requêtes et formes de requêtes les plus lentes depuis les données du profiler
MongoDBPerformancesCommande
// Recent slow operations (in the db where profiling is on; see set-profiling):
db.system.profile.find({ millis: { $gte: 100 } }, { ts: 1, ns: 1, op: 1, millis: 1, planSummary: 1, keysExamined: 1, docsExamined: 1, nreturned: 1, appName: 1 }).sort({ ts: -1 }).limit(20)
// Total time per query shape (those consuming the most time):
db.system.profile.aggregate([
{ $group: { _id: { ns: "$ns", plan: "$planSummary", shape: "$queryHash" }, n: { $sum: 1 }, totalMs: { $sum: "$millis" }, maxMs: { $max: "$millis" }, avgDocs: { $avg: "$docsExamined" } } },
{ $sort: { totalMs: -1 } },
{ $limit: 10 }
])
// Queries not using an index (COLLSCAN):
db.system.profile.find({ planSummary: "COLLSCAN" }, { ns: 1, millis: 1, command: 1 }).sort({ millis: -1 }).limit(10)Ce que fait la commande
À partir des enregistrements de la collection system.profile, liste les opérations lentes récentes, le temps total par forme de requête (queryHash) et les requêtes COLLSCAN qui n'utilisent aucun index.
Quand l'utiliser
Sur une plainte de lenteur, pour trouver quelle requête consomme le temps du serveur et déterminer les besoins en index.
Attention
system.profile est une collection capped de 1 MB par défaut et est propre à chaque base ; sur un système chargé, les enregistrements tournent en quelques minutes, analysez donc pendant que le profiling est actif ou juste après. Le niveau de profiling 2 ou slowms 0 écrit chaque opération et ajoute une surcharge importante. Les enregistrements ne sont conservés que sur le membre où ils ont été exécutés et ne sont pas répliqués.
Voir aussi
- Inspecter un plan de requête avec les statistiques d'exécution réelles (explain executionStats)
- Trouver les index inutilisés et les masquer avant de les supprimer (hideIndex)
- Compter les connexions par application et client (diagnostic de tempête de connexions)
- Mesurer la pression sur le cache WiredTiger (remplissage, taux de pages sales, éviction par l'application)