2013-02-20 3 views
4

Je continue à voir dans mon journal/development.log, et je me demande si cette requête est en fait en cours d'exécution dans ma base de données:Comment visualiser les requêtes en cours d'exécution par mon mongodb?

MONGODB (0ms) socialcrunch_development['tags'].find({:_id=>"secrets"}).limit(-1).sort([[:_id, :asc]]) 

Ho je peux voir les requêtes en cours d'exécution sur mon mongo db, donc je peux les compter, devraient-ils tous généralement être des commandes .find, ou devrais-je chercher quelque chose d'autre?

Répondre

7

Imprimer toutes les lectures actives:

db.currentOp().inprog.forEach(
    function(d){ 
    if(d.waitingForLock && d.lockType != "read") 
     printjson(d) 
    }) 

Imprimer toutes les écritures actives:

db.currentOp().inprog.forEach(
    function(d){ 
    if(d.waitingForLock && d.lockType != "write") 
     printjson(d) 
    }) 

Vous pouvez obtenir beaucoup plus granulaire si vous le souhaitez en utilisant currentOp.op pour filtrer par type d'opération spécifique (insert , mise à jour, suppression, etc.)

Vérifiez la page suivante de la documentation MongoDB.org pour plus d'informations: http://docs.mongodb.org/manual/reference/current-op/

+1

Cette frappe haut sur ma recherche google, je cherchais quelque chose de similaire à mysql 'SET global general_log = 1; SET global log_output = 'table';' et ensuite interroger les requêtes faites par mon application (peut-être même filtrer par le texte de la requête). Cela m'a aidé avec mysql d'une manière géniale pour voir ce que mon application est en train d'interroger mais je n'ai aucune idée de comment le faire en mongodb et googler car cela me mène à des pages similaires à celle-ci pour rechercher des requêtes actives. – HMR

+2

@HMR currentOp est juste ce que cela ressemble (seulement les opérations en cours). Si vous souhaitez collecter toutes les activités de base de données de votre application afin de pouvoir analyser les performances de vos requêtes, il existe un outil connexe mais différent. Essayez de définir le niveau de profil à "2" qui enregistre tout dans la collection system.profile. Plus d'infos ici: http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/ –

+2

Notez que vous ne voulez pas laisser le niveau de profil comme ça tout le temps. Ne l'exécutez que pour une courte période, puis désactivez-le. Le profilage qui implique fortement un coût de performance et des écritures supplémentaires. –

1

http://www.mongovue.com/ fournit une bonne interface ui pour vérifier l'état d'exécution du serveur

+0

sous le capot cela fait la même chose que ma réponse, mais c'est une excellente option si vous préférez aller sur la route GUI. –

Questions connexes