sql >> Database >  >> NoSQL >> MongoDB

MongoDB Hoe krijgen we alle HUIDIGE open cursors en de query's die ze uitvoeren?

MongoDB heeft een commando 'currentOp' dat huidige operaties bevat (in het algemeen niet alleen open cursors). Het resultaat is een array van "inprog"-waarden. Je hebt de thread-ID van de bewerking, geen cursor-ID, maar het is erg handig om zware operaties te onderzoeken of operaties die al lang worden uitgevoerd. Het is niet perfect wat je wilt, maar ik denk dat je een klein programma zou kunnen schrijven dat analyseer de tijd van bewerkingen om te bepalen welke al een bepaalde tijd actief zijn.

Kijk naar een voorbeeld van mijn database van een aggregatie die ik alleen voor testdoeleinden gebruik, ik zal sommige gegevens verbergen omdat het in ons geval erg verstandig is :)

"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
                    }
                }
            ]

Zet het resultaat gewoon in een variabele:

currentOps = db.currentOp()

en gebruik het als een gewone json, of schrijf een klein programma dat de currentOps.inprog-array herhaalt en controleer op secs_running> iets

Ik hoop dat het helpt.



  1. Ingesloten document versus referentie in het ontwerpmodel van mangoest?

  2. Redis is single-threaded, hoe doet het dan gelijktijdige I/O?

  3. Kan geen verbinding maken met Redis vanuit Docker

  4. JSON serialiseert Mongodb