mongostat是mongodb自带的状态检测工具,在命令行下使用,会间隔固定时间获取mongodb的当前运行状态,并输出。
命令:( version: v4.2.12-13 )
# mongostat --host=127.0.0.1 --port=27017 --username=admin --password='hankyoon' --authenticationDatabase=admin insert query update delete getmore command dirty used flushes vsize res qrw arw net_in net_out conn set repl time *0 *0 *0 *0 0 26|0 0.0% 0.2% 0 3.07G 1.01G 0|0 1|0 4.52k 137k 137 yoon PRI Aug 3 20:33:43.036 *0 *0 *0 *0 2 20|0 0.0% 0.2% 0 3.07G 1.01G 0|0 1|0 5.94k 92.8k 137 yoon PRI Aug 3 20:33:44.035 *0 *0 *0 *0 0 16|0 0.0% 0.2% 0 3.07G 1.01G 0|0 1|0 2.94k 90.2k 137 yoon PRI Aug 3 20:33:45.035 *0 *0 *0 *0 0 6|0 0.0% 0.2% 0 3.07G 1.01G 0|0 1|0 1.31k 42.5k 137 yoon PRI Aug 3 20:33:46.036 *0 *0 *0 *0 0 0|0 0.0% 0.2% 0 3.07G 1.01G 0|0 1|0 262b 38.3k 137 yoon PRI Aug 3 20:33:47.036 *0 *0 *0 *0 0 5|0 0.0% 0.2% 0 3.07G 1.01G 0|0 1|0 1.10k 41.0k 137 yoon PRI Aug 3 20:33:48.035 *0 *0 *0 *0 1 3|0 0.0% 0.2% 0 3.07G 1.01G 0|0 1|0 3.04k 41.1k 137 yoon PRI Aug 3 20:33:49.036 *0 *0 *0 *0 0 6|0 0.0% 0.2% 0 3.07G 1.01G 0|0 1|0 1.26k 41.7k 137 yoon PRI Aug 3 20:33:50.035 *0 *0 1 *0 7 10|0 0.0% 0.2% 0 3.07G 1.01G 0|0 1|0 13.8k 49.7k 137 yoon PRI Aug 3 20:33:51.036 *0 *0 *0 *0 0 5|0 0.0% 0.2% 0 3.07G 1.01G 0|0 1|0 1.15k 41.0k 137 yoon PRI Aug 3 20:33:52.036
监控指标详解:
insert 每秒插入数 query 每秒查询数 update 每秒更新数 delete 每秒删除数 注1:如果是slave,数值前往往有一个*, 代表是replicate操作 注2:一秒内执行的命令数比如批量插入,只认为是一条命令(所以意义应该不大) getmore 查询时游标(cursor)的getmore操作 command 每秒内执行的命令数,在主从系统中会显示两个值(例如 3|0),分表代表 本地|复制 命令 dirty 仅仅针对WiredTiger引擎,官网解释是脏数据字节的缓存百分比 used 仅仅针对WiredTiger引擎,官网解释是正在使用中的缓存百分比 flushes: For WiredTiger引擎:指checkpoint的触发次数在一个轮询间隔期间 For MMAPv1 引擎:每秒执行fsync将数据写入硬盘的次数 注:一般都是0,间断性会是1, 通过计算两个1之间的间隔时间,可以大致了解多长时间flush一次。flush开销是很大的,如果频繁的flush,可能就要找找原因了 vsize: 虚拟内存使用量,单位MB (这是 在mongostat 最后一次调用的总数据) res: 物理内存使用量,单位MB (这是 在mongostat 最后一次调用的总数据) 注:这个和你用top看到的一样, vsize一般不会有大的变动, res会慢慢的上升,如果res经常突然下降,去查查是否有别的程序狂吃内存。 qr: 客户端等待从MongoDB实例读数据的队列长度 qw:客户端等待从MongoDB实例写入数据的队列长度 ar: 执行读操作的活跃客户端数量 aw: 执行写操作的活客户端数量 注:如果这两个数值很大,那么就是DB被堵住了,DB的处理速度不及请求速度。看看是否有开销很大的慢查询。如果查询一切正常,确实是负载很大,就需要加机器了 net_in network traffic in - bits MongoDB实例的网络进流量 net_out network traffic out - bits MongoDB实例的网络出流量 conn MongoDB为每一个连接创建一个线程,线程的创建与释放也会有开销,所以尽量要适当配置连接数的启动参数