一. 监控正在执行的操作
db.currentOp();
opid: 唯一标识符
active: 操作是否在运行
secs_running: 操作已经运行的时间
locks: 使用的锁类型,^表示全局锁
可以传入查询条件进行查询,比如耗时大于3s的查询db.currentOp({"secs_running":{"gt":3000}}),终止某一个操作db.killOp(opid).
二. 系统分析器
使用系统分析器,可以查找耗时过长的操作。如果系统负载本来比较重,建议不要使用。
db.setProfilingLevel(1,500), //级别为1,只显示耗时长的操作,默认是大于100ms。第二参数可以修改这个默认值,这里我们指定的是500ms。如果级别设置为0,是关闭系统分析器,但是关闭了也会记录大于500ms操作的日志。注意,别把默认超时设置很短。
三. mongotop和mongostat
mongotop 类似linux中的top命令,看哪个集合最繁忙。 mongotop-locks查看锁状态
mongostat 当前服务器的状态列表
flushes: mongo将数据刷新到磁盘的次数
mapped:映射内存数量,约等于数据目录大小
res: mongo正在使用的内存大小
idx miss: 多少索引在访问中发生了页中断,索引入口不在内存中,需要从磁盘中进行读取。
qr|qw: 读写操作的队列大小,有多少读或者写操作被阻塞,等待处理
ar|aw: 读写操作活动的客户端。
netin: 网络传输进来的字节数
netout: 网络输出的字节数
conn: 服务打开的连接数