mongostat
参考文章:
http://blog.youkuaiyun.com/huithe/article/details/6925684#
http://www.cnblogs.com/zhuque/archive/2013/03/29/2988577.html
http://www.cnblogs.com/renyb/archive/2013/01/18/2866632.html
感谢作者。
insert 每秒插入次数
query 每秒查询次数
update 每秒更新次数
delete 每秒删除次数
(10条简单查询可能比一条复杂的查询速度更快,所以数值大小意义不大。但至少可以知道,是否在处理查询、是否在插入)
getmore 每秒执行getmore次数(查询时游标cursor的getmore操作)
command 每秒命令数(包括增删改查以及其他所有命令)
flushes 每秒执行fsync将数据写入硬盘的次数(每秒刷新次数(一般都是0,或者1.通过计算两个1之间的间隔时间,可以大致了解多长时间flush一次。flush的开销很大,如果频繁的flush,需要找找原因))
mapped 所有被mmap的数据量,单位Mb
vsize 虚拟内存使用量,单位Mb
res mapped、vsize 一般不会有大的变动,res会慢慢的上升,如果res经常突然下降,则需要检查是否有别的程序占很大内存。
faults 每秒访问失败数(只有Linux有),数据被交换出物理内存,放到swap。不要超过100,否则就是机器内存太小,造成频繁swap写入,此时要升级内存或扩展。
locked 被锁的时间百分比,尽量控制在50%以下。MongoDB就像一把读写锁,locked指的是写锁锁住的时间的百分比。这个数值过大(经常超过10%),便是出状况了。
idx miss 索引不命中所占百分比,如果太高的话就要考虑索引是不是少了。非常重要的参数。正常情况下,所有查询应该都通过索引,也就是idx miss为0,如果这里数值较大,考虑是否缺少索引。
qr | qw queue lengths for clients waiting (read | write)
ar | aw active clients (read | write)
(当MongoDB接收到太多命令而数据库被锁住无法执行完成,它会将命令加入队列。如果qr | qw和ar | aw数值很大,那么就是DB被堵住了,DB的处理速度不及请求速度。看看是否有开销和大的慢查询。检查是否有开销很大的慢查询。如果查询一切正常,确实是负载很大,那么考虑加机器)
netIn network traffic in - bits
netOut network traffic out - bits
(网络带宽压力。一般MongoDB,网络不会成为瓶颈)
conn number of open onnections
(MongoDB为每一个连接创建一个线程,线程的创建和释放也是有开销的,尽量不要让这个数值很大)
repl 服务器当前状态
M master
SEC secondary
REC recovering
UNK unkown
SLV slave
time 当前时间