mongostat是mongodb自带的一个用来查看mongodb运行状态的工具
使用说明
mongostat -h 127.0.0.1:12345
 
字段说明
启用后的状况是这样的
insert query update delete getmore command dirty used flushes vsize res qrw arw net_in net_out conn time
*0 *0 *0 *0 0 1|0 0.0% 0.0% 0 3.11G 34.0M 0|0 1|0 157b 57.1k 1 Aug 11 07:59:21.760
*0 *0 *0 *0 0 2|0 0.0% 0.0% 0 3.11G 34.0M 0|0 1|0 158b 57.1k 1 Aug 11 07:59:22.760
*0 *0 *0 *0 0 1|0 0.0% 0.0% 0 3.11G 34.0M 0|0 1|0 157b 57.0k 1 Aug 11 07:59:23.761
*0 *0 *0 *0 0 1|0 0.0% 0.0% 0 3.11G 34.0M 0|0 1|0 157b 57.1k 1 Aug 11 07:59:24.762
*0 *0 *0 *0 0 1|0 0.0% 0.0% 0 3.11G 34.0M 0|0 1|0 157b 57.0k 1 Aug 11 07:59:25.764
*0 *0 *0 *0 0 1|0 0.0% 0.0% 0 3.11G 34.0M 0|0 1|0 157b 57.1k 1 Aug 11 07:59:26.764
*0 *0 *0 *0 0 1|0 0.0% 0.0% 0 3.11G 34.0M 0|0 1|0 157b 57.1k 1 Aug 11 07:59:27.764
*0 *0 *0 *0 0 2|0 0.0% 0.0% 1 3.11G 34.0M 0|0 1|0 159b 57.5k 1 Aug 11 07:59:28.757
inserts:当前mongodb插入数量
query:当前mongodb的查询数量,数量以每秒为单位
update:当前mongodb的更新数量
delete:当前mongodb的删除数量
getmore:在进行mongodb查询时,每次并不是返回所有的数据,比如要一次查询一百万条,每次只会返回一定量的数据,当每次find的时候,getmore用来获取以后的数据
command:执行命令的数量
flushes:在mongodb写入数据,查询数据时,我们看到的数据是在内存中,实际上并不是在内存中,有些是在硬盘上的,每个一段时间,mongodb会把内存数据刷到硬盘上,flushes就是看mongodb隔多久往磁盘上刷一次
mapped,vsize,res:mongodb所占据到磁盘空间大小和申请的内存大小
faults:如果数据没有加塞到内存中,需要到硬盘上读取
locked:锁的情况
ids miss:表明当前查询没有使用索引的情况
qr|qw:在写入或读取数据时,并不是来个请求就处理,而是放到队列中,如果请求比较多,或者mongodb处理比较慢,这样qr,qw比较高,一般到qr,qw比较高时,比如几百上千,mongodb的性能会出现明显的下降
ar|aw:当前活跃的客户端的数目
netIn,netOut:mongodb使用网卡的输入流量
conn:连接到mongodb到连接数量
 
 
使用mongostat效果验证
> for(i=0; i<100000; i++) db.imooc_2.insert({x:i})
WriteResult({ "nInserted" : 1 })
插入十万条数据,同时另起一个窗口,查看mongostat状态
./bin/mongostat -h 127.0.0.1:12345
insert query update delete getmore command dirty used flushes vsize res qrw arw net_in net_out conn time
2312 *0 *0 *0 0 2|0 0.4% 0.5% 0 3.13G 31.0M 0|0 1|0 273k 162k 3 Aug 12 07:12:33.009
2283 *0 *0 *0 0 1|0 0.4% 0.5% 0 3.13G 32.0M 0|0 1|0 270k 160k 3 Aug 12 07:12:34.010
2341 *0 *0 *0 0 1|0 0.4% 0.5% 0 3.13G 32.0M 0|0 1|0 276k 163k 3 Aug 12 07:12:35.010
2432 *0 *0 *0 0 2|0 0.4% 0.5% 0 3.13G 32.0M 0|0 1|1 287k 167k 3 Aug 12 07:12:36.010
2358 *0 *0 *0 0 2|0 0.4% 0.5% 0 3.13G 33.0M 0|0 1|0 279k 163k 3 Aug 12 07:12:37.009
2215 *0 *0 *0 0 1|0 0.4% 0.6% 0 3.13G 33.0M 0|0 1|0 262k 157k 3 Aug 12 07:12:38.009
2362 *0 *0 *0 0 1|0 0.4% 0.6% 0 3.13G 34.0M 0|0 1|0 279k 164k 3 Aug 12 07:12:39.010
可以看到insert,正在以每秒两千多的速度插入数据

在实际使用中,根据情况的不同,都会不同对应都值,一般来说,对于性能,我们比较关心的是,qr,读队列,如果读队列比较多,说明系统的读请求负载比较高,会出现比较严重的性能问题,qw,写队列,这两个一般能直观的反应系统的性能状况,如果他们的数字大幅度提高,mongodb会立刻遇到问题