profiler可以定位慢查询,有3个级别
0 关闭profiling 1 只包含slow操作,2记录所有操作
默认情况下是off的,
开启,并设置级别
db.setProfilingLevel(2)
默认情况下,慢操作的限制是100毫秒,
db.setProfilingLevel(0,20)该命令设置级别,并设置慢操作阈值,但是级别是针对当前数据库的,慢操作阈值是针对实例的。
查看profiling级别和阈值
db.getProfilingStatus()
只查看级别
db.getProfilingLevel()
关闭profiling
db.setProfilingLevel(0)
查看结果
下面是查看最近的10条记录
db.system.profile.find().limit(10).sort( { ts : -1 } ).pretty()
查看超过5毫秒的操作
db.system.profile.find( { millis : { gt : 5 } } ).pretty()  
查看一段时间范围内的操作  

db.system.profile.find(  
                       {  
                        ts : {gt : new ISODate(“2012-12-09T03:00:00Z”) ,
$lt : new ISODate(“2012-12-09T03:40:00Z”)
}
}
).pretty()

db.system.profile.find(
{
ts : {
gt:newISODate(“2011−07−12T03:00:00Z”), lt : new ISODate(“2011-07-12T03:40:00Z”)
}
},
{ user : 0 }
).sort( { millis : -1 } )

在primary上改变system.profile的大小
db.setProfilingLevel(0)

db.system.profile.drop()

db.createCollection( “system.profile”, { capped: true, size:4000000 } )

db.setProfilingLevel(1)

在secondary上修改system.profile大小
1停止 secondary
2已单独的方式运行 secondary
3执行上面的primary修改的步骤
4secondary作为replica set的一部分启动