mongostat
insert 表示每秒插入数据库的对象数量,如果跟在一个*后面,表示这是复制操作
query 每秒查询操作数量
update 每秒更新操作数量
delete 每秒删除操作数量
getmore 每秒get more操作的数量
command 每秒执行数据库命令操作的数量(比如插入、查找、更新、删除等等)
flushes 每秒执行fsync操作的数量
mapped 映射数据的总量,以兆字节M表示。这里的数据是从上次mongostat显示到这次的数量
vsize mongod或mongos进程用掉的虚拟内存,以兆字节M表示
locked db 这里的值表示当前列出的数据库在锁定状态上花销的时间加上mongod进程在全局锁上花销的时间,以百分比表示
idx miss 表示需要一个页面错误来加载一个Btree节点的索引访问尝试的百分比
qr 客户端等待从MongoDB实例读操作的队列长度
qw 客户端等待从MongoDB实例写操作的队列长度
ar 正在执行读操作的客户端数量
aw 正在执行写操作的客户端数量
netIn MongoDB实例接收到的网络流量,用字节bytes表示,包括mongostat本身连接MongoDB实例产生的流量
netOut MongoDB实例发送出去的网络流量,用字节bytes表示,包括mongostat本身连接MongoDB实例产生的流量
conn 打开的连接数总数
set replica set的名称
repl replica set的状态 PRI 表示是Primary,SEC表示是Secondary
mongotop
mongotop -h localhost:27018(mongod上执行)
输出字段说明:
ns:数据库命名空间,后者结合了数据库名称和集合。
db:数据库的名称。名为 . 的数据库针对全局锁定,而非特定数据库。
total:mongod在这个命令空间上花费的总时间。
read:在这个命令空间上mongod执行读操作花费的时间。
write:在这个命令空间上mongod进行写操作花费的时间。
Profiling捕捉慢查询
1. 设置一个时间阀值,比如200ms
2. 在profiling中(system.profile)找到超过200ms的语句
3. 查看execStats,分析执行计划
4. 根据分析结果,决定是不是需要添加索引
命令操作:
db.getProfilingStatus()
监控项
flushs/s 每秒执行fsync将数据写入硬盘的次数。
faults/s 每秒访问失败数
locked % 被锁的时间百分比,尽量控制在50%以下
idx miss %
conn 当前连接数
q t|r|w 列队命令