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)
Like this:
Like Loading...