1.使用mongostat(参考:http://www.2cto.com/database/201302/191013.html)
mongostat是mongdb自带的状态检测工具,在命令行下使用.
它会间隔固定时间获取mongodb的当前运行状态,并输出
如果你发现数据库突然变慢或者有其他问题的话,你第一手的操作就考虑采用mongostat来查看mongo的状态
使用方式:
方式一:使用mongodb自带的检查工具
在mongodb的bin目录下点击"mongostat.exe"即可
方式二:使用命令启动
首先开启mongo服务;
然后重新开一个命令窗口,进入mongodb的bin目录
输入:mongostat --host 127.0.0.1 --port 27017 --rowcount 10 3 (每3秒返回一次结果,共执行10次 rowcount是可选项)
mongostat --host 127.0.1 --port 27017 --rowcount 2 (每3秒返回一次结果)
(Ctrl+c 退出命令 )
命令格式:
mongostat --host 127.0.0.1 --port 27017
结果如图:
重要参数说明
insert: 一秒内的插入数
query : 一秒内的查询数
update: 一秒内的更新数
delete: 一秒内的删除数
flushes: 一秒内flush的次数, 一般都是0,或者1,通过计算两个1之间的间隔时间,可以大致了解多长时间flush一次。
flush开销是很大的,如果频繁的flush,可能就要找找原因了
faults:别被这个名字吓着,大压力下这个数值往往不为0。如果经常不为0,那就该加内存了
locked: MongoDB就一把读写锁,这里指的是写锁所住的时间百分比。这个数值过大(经常超过10%),那就是出状况了。
idx miss: 非常重要的参数
正常情况下,所有的查询都应该通过索引,也就是idx miss为0。如果这里数值较大,是不是缺少索引。
conn: number of open connections
MongoDB为每一个连接创建一个线程,线程的创建和释放也是有开销的。尽量不要让这个数值很大。
2.使用mongotop
mongotop提供每个集合的水平的统计数据。默认情况下,mongotop返回值的每一秒。
使用方式
方式一:直接使用bin目录中的mongotop.exe
方式二:使用命令启动
mongotop 5 ; --每5秒返回一次结果,默认值是1秒
mongotop --locks 报告每个数据库的锁的使用中,使用mongotop - 锁
3.使用stats
3.1 db.stats(); 返回数据库所占用的存储情况
3.2 db.collection.stats(); --返回collection的一些信息
结果字段介绍:
ns:包含数据库命名空间,后者结合了数据库名称和集合。
db:包含数据库的名称。名为 . 的数据库针对全局锁定,而非特定数据库。
total:mongod花费的时间工作在这个命名空间提供总额。
read:提供了大量的时间,这mongod花费在执行读操作,在此命名空间。
write:提供这个命名空间进行写操作,这mongod花了大量的时间。