sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB ¿Cómo obtenemos todos los cursores abiertos ACTUALES y las consultas que están ejecutando?

MongoDB tiene un comando 'currentOp' que contiene operaciones actuales (en general, no solo cursores abiertos). El resultado es una matriz de valores "inprog". Tiene la identificación del hilo de la operación, no una identificación del cursor, pero es muy útil para investigar operaciones pesadas o aquellas que se han estado ejecutando durante mucho tiempo. No es exactamente lo que desea, pero creo que podría escribir un pequeño programa que analizar el tiempo de ejecución de las operaciones para identificar cuáles se han estado ejecutando durante un cierto período de tiempo.

Mire un ejemplo de mi base de datos de una agregación que ejecuto solo con fines de prueba, ocultaré algunos datos porque es muy sensato en nuestro caso :)

"inprog" : [
    {
        "opid" : 74074645,
        "active" : true,
        "secs_running" : 2,
        "op" : "query",
        "ns" : "mydb.Terms.ByHour",
        "query" : {
            "aggregate" : "Terms.ByHour",
            "pipeline" : [
                {
                    "$match" : {
                        "cluster" : "my_key",
                        "start" : {
                            "$gte" : ISODate("2013-11-10T00:00:00Z"),
                            "$lte" : ISODate("2013-11-11T00:00:00Z")
                        }
                    }
                },
                {
                    "$group" : {
                        "_id" : "$start",
                        "count" : {
                            "$sum" : "$count"
                        }
                    }
                },
                {
                    "$sort" : {
                        "_id" : 1
                    }
                }
            ]

Solo pon el resultado en una variable:

currentOps = db.currentOp()

y úselo como un json regular, o escriba un pequeño programa que itere la matriz currentOps.inprog y verifique secs_running> algo

Espero que ayude.