Mongodb性能监控
当你的mongodb出现插入查询等过慢的问题,你第一想到应该是查看mongodb运行状态。
mongostat是Mongodb自带命令,位于Mongodb bin目录下,使用方法:./mongostat,图示如下:
这是在SecureCRT下显示的,SecureCRT默认显示列数过小,如果出现换行情况,在选项--全局选项--调整最大列为150即可。
各指标含义:
- inserts/s 每秒插入次数
- query/s 每秒查询次数
- update/s 每秒更新次数
- delete/s 每秒删除次数
- getmore/s 每秒执行getmore次数
- command/s 每秒的命令数,比如count
- flushs/s 每秒执行fsync将数据写入硬盘的次数。
- mapped/s 所有的被mmap的数据量,单位是MB,
- vsize 虚拟内存使用量,单位MB
- res 物理内存使用量,单位MB
- faults/s 每秒访问失败数(只有Linux有),数据被交换出物理内存,放到swap。不要超过100,否则就是机器内存太小,造成频繁swap写入。此时要升级内存或者扩展
- locked % 被锁的时间百分比,尽量控制在50%以下吧
- idx miss % 索引不命中所占百分比。如果太高的话就要考虑索引是不是少了
- q t|r|w 当Mongodb接收到太多的命令而数据库被锁住无法执行完成,它会将命令加入队列。这一栏显示了总共、读、写3个队列的长度,都为0的话表示mongo毫无压力。高并发时,一般队列值会升高。
- conn 当前连接数
- time 时间戳
Mongodb良好运行标示:
insert query update delete 较稳定,这4列数据越大说明性能越高,如果运行一定时间后,指标骤减,说明程序处理存在问题。
faults越小越好,越小说明操作失败率越低;
idx miss越小越好,越小说明索引命中率越高,Mongodb索引非常重要;
netin/netout 数据越大越好,越大说明进出数据交换越大。