Current operations
db.currentOp()
Operations running for over 5 seconds…
db.currentOp().inprog.forEach(function(op) { if (op.secs_running > 5) printjson(op); })
Write operations waiting for a lock
db.currentOp( { "waitingForLock" : true, $or: [ { "op" : { "$in" : [ "insert", "update", "remove" ] } }, { "query.findandmodify": { $exists: true } } ] } )
Operations that have never yielded
db.currentOp( { "active" : true, "numYields" : 0, "waitingForLock" : false } )
Index creation operations
db.currentOp( { $or: [ { op: "query", "query.createIndexes": { $exists: true } }, { op: "insert", ns: /\.system\.indexes\b/ } ] } )
Profiling Levels
- 0 – the profiler is off, does not collect any data.
- 1 – collects profiling data for slow operations only.
- 2 – collects profiling data for all database operations.
Checking profiling level
db.getProfilingStatus()
Turn on profiling for operations taking more than 1 second (1000 milliseconds)
db.setProfilingLevel(1,1000)
Turn profiling off
db.setProfilingLevel(0)
5 most recent operations logged in the system.profile table
db.system.profile.find().limit(5).sort( { ts : -1 } ).pretty()
Recent operations that took longer than 5 seconds
db.system.profile.find( { millis : { $gt : 5000 } } ).pretty()
Ten recent operations that took over 15 seconds. Print only important fields.
db.system.profile.find({ millis: { $gt: 15000 } }, { ns: 1, query: 1, numYield: 1, millis: 1 }).limit(10).pretty();
More examples:
db.system.profile.find({ millis: { $gt: 5000 }, ts: { $gt: new Date(ISODate().getTime() - 1000 * 60 * 10) } }).limit(5).pretty(); db.system.profile.find({ millis: { $gt: 5000 }, ts: { $gt: new Date(ISODate().getTime() - 1000 * 60 * 10) } }, { op: 1, ns: 1, query: 1, numYield: 1, millis: 1, ts: 1 }).limit(5).pretty();
To change the size of the system.profile collection, you must:
- Disable profiling.
- Drop the system.profile collection.
- Create a new system.profile collection.
- Re-enable profiling.
To create a new system.profile collections that’s 4000000 bytes, use the following sequence of operations
db.setProfilingLevel(0) db.system.profile.drop() db.createCollection( "system.profile", { capped: true, size:4000000 } ) db.setProfilingLevel(1)