mongoDB之监控工具mongostat

 

mongostat是mongdb自带的状态检测工具,在命令行下使用。它会间隔固定时间获取mongodb的当前运行状态,并输出。若是你发现数据库忽然变慢或者有其余问题的话,你第一手的操做就考虑采用mongostat来查看mongo的状态。mongodb

mongostat命令格式,固然也能够加参数:数据库

在第一个例子中,mongostat将返回数据的每一秒,持续20秒。 mongostat收集数据的mongod实例上运行的本地主机接口端口27017。如下全部调用产生相同的行为:
 
mongostat -rowcount 20 1
mongostat -rowcount 20
mongostat -N 20 1
mongostat -N 20
在下面的例子中,mongostat返回的数据每5分钟(300秒),只要在程序运行。 mongostat收集数据的mongod实例上运行的本地主机接口端口27017。如下两种调用产生相同的行为。
 
mongostat - rowcount 0 300
mongostat -N 0 300
mongostat 300
在下面的例子中,mongostat返回的数据每5分钟一个小时(12次)。mongostat收集数据的mongod实例上运行的本地主机接口端口27017。如下两种调用产生相同的行为。
 
mongostat -rowcount 12 300
mongostat -N 12 300
在许多状况下,使用 -discover将帮助整组机器的状态,提供更完整的快照。若是Mongos的过程当中,链接到一个片式集群上运行在本地机器上的端口27017,你可使用下面的形式从群集中的全部成员返回统计:
 

mongostat -discoverwindows

以上参考文档:http://cn.docs.mongodb.org/manual/reference/mongostat/ 服务器

 

 主要详细说明一下各列的意义(也能够参考./mongostat --help)网络

insert:     一秒内的插入数
query :     一秒内的查询数
update:     一秒内的更新数
delete:     一秒内的删除数
  10条简单的查询可能比一条复杂的查询速度还快, 因此数值的大小,意义并不大。
  但至少能够知道,如今是否在处理查询,是否在插入。
  若是是slave,数值前每每有一个*, 表明是replicate操做
 
getmore:    查询时游标(cursor)的getmore操做
  用处不大
    www.2cto.com  
command:    一秒内执行的命令数
  好比批量插入,只认为是一条命令。 意义不大。
  若是是slave,会显示两个值, local|replicated,经过这两个数值的比较,或许能够看出点问题。
  
flushes:    一秒内flush的次数 
  通常都是0,或者1,经过计算两个1之间的间隔时间,能够大体了解多长时间flush一次。
  flush开销是很大的,若是频繁的flush,可能就要找找缘由了。
    
mapped:     
vsize:
res:
  这个和你用top看到的同样,mapped, vsize通常不会有大的变更, res会慢慢的上升,若是res常常忽然降低,去查查是否有别的程序狂吃内存。
  
faults:
  别被这个名字吓着,大压力下这个数值每每不为0。若是常常不为0,那就该加内存了。
  
locked:
  MongoDB就一把读写锁,这里指的是写锁所住的时间百分比。这个数值过大(常常超过10%),那就是出情况了。
  
idx miss:
  很是重要的参数, 正常状况下,全部的查询都应该经过索引,也就是idx miss为0。若是这里数值较大,是否是缺乏索引。
  
qr|qw: queue lengths for clients waiting (read|write)
ar|aw: active clients (read|write)
  若是这两个数值很大,那么就是DB被堵住了,DB的处理速度不及请求速度。
  看看是否有开销很大的慢查询。若是查询一切正常,确实是负载很大,就须要加机器了。
  
netIn: network traffic in - bits
netOut: network traffic out - bits
  网络带宽压力,通常MongoDB,网络不会成为瓶颈
 
conn: number of open connections
  MongoDB为每个链接建立一个线程,线程的建立和释放也是有开销的。尽可能不要让这个数值很大。
 
repl: 服务器当前状态
    M   - master
    SEC - secondary
    REC - recovering
    UNK - unknown
    SLV - slave
    
time: 当前时间

 若是在windows下的cmd窗口中执行mongostat命令时,可能因为窗口太窄,监控数据排列较乱而阻碍视觉的状况,你们能够把结果输出到一个txt文件中,而后去查看这个文件,办法是曲折了一些哈哈。app

E:\mongodb-win32-x86_64-2.2.1\bin\mongostat -n 2 > E:\test.txt 工具

 打印2行结果到E盘的跟目录下的test.txt中。post

参考文档:http://cn.docs.mongodb.org/manual/reference/mongostat/