MongoDB 监控工具 mongostat

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为每一个连接创建一个线程,线程的创建与释放也会有开销,所以尽量要适当配置连接数的启动参数

 

MongoDB 监控工具 mongostat

上一篇:thinkphp5 原生sql带分页方法


下一篇:C++中的各种小细节(一)