mongodb-查看当前数据库动态

来源:互联网 发布:人工智能的威胁 编辑:程序博客网 时间:2024/05/22 01:37

一、查看当前的操作

1、db.currentOp()

currentOp会将后端Mongod上正在执行的请求都列出来,也可根据查询条件(如请求类型,请求是否正在等待锁,请求操作的DB或collection)来进行过滤。

example:

查询连接到db1上的操作时间大于3s的操作:

db.currentOp(   {     "active" : true,     "secs_running" : { "$gt" : 3 },     "ns" : /^db1\./   })

output example:

{  "inprog": [       {         "desc" : <string>,         "threadId" : <string>,         "connectionId" : <number>,         "opid" : <number>,         "active" : <boolean>,         "secs_running" : <NumberLong()>,         "microsecs_running" : <number>,         "op" : <string>,         "ns" : <string>,         "query" : <document>,         "insert" : <document>,         "planSummary": <string>,         "client" : <string>,         "msg": <string>,         "progress" : {             "done" : <number>,             "total" : <number>         },         "killPending" : <boolean>,         "numYields" : <number>,         "locks" : {             "Global" : <string>,             "MMAPV1Journal" : <string>,             "Database" : <string>,             "Collection" : <string>,             "Metadata" : <string>,             "oplog" : <string>         },         "waitingForLock" : <boolean>,         "lockStats" : {             "Global": {                "acquireCount": {                   "r": <NumberLong>,                   "w": <NumberLong>,                   "R": <NumberLong>,                   "W": <NumberLong>                },                "acquireWaitCount": {                   "r": <NumberLong>,                   "w": <NumberLong>,                   "R": <NumberLong>,                   "W": <NumberLong>                },                "timeAcquiringMicros" : {                   "r" : NumberLong(0),                   "w" : NumberLong(0),                   "R" : NumberLong(0),                   "W" : NumberLong(0)                },                "deadlockCount" : {                   "r" : NumberLong(0),                   "w" : NumberLong(0),                   "R" : NumberLong(0),                   "W" : NumberLong(0)                }             },             "MMAPV1Journal": {                ...             },             "Database" : {                ...             },             ...         }       },       ...   ],   "fsyncLock": <boolean>,   "info": <string>}
输出中的重要字段:

opid:

操作的唯一标识,可以在mongo shell中通过db.killOp(opid)终止一个操作。

active:

表示操作是否正在运行。如果该字段值为false,表示该操作已经交出或者整在等待其他操作交出锁。

secs_running:

表示该操作已经运行的时长,可通过该字段判断慢查询。

op:

表示操作的类型,通常是查询、插入、更新、删除的一种。注意数据库命令也被当做查询操作来处理。

WaitingForLock:
表示该操作是否因正在等待其他操作交出锁而处于等待状态。

numYields:

表示操作交出锁而使其他操作得以运行的次数。通常进行文档搜索的操作(查询、更新和删除)可以交出锁。

2、db.killOp()

可以db.killOp(opid)终止操作。

并非所有的操作都可以被终止,只有交出了锁的进程的才能被终止,正在占用锁,或者正在等待其他操作交出锁的操作通常无法被终止。

二、计算空间消耗

1、查看文档大小

Object.bsonsize({_id:ObjectId()})

2、查看数据库信息

db.stats()

MongoDB Enterprise > db.stats(){        "db" : "test",        "collections" : 1,        "objects" : 2000,        "avgObjSize" : 33,        "dataSize" : 66000,        "storageSize" : 73728,        "numExtents" : 0,        "indexes" : 1,        "indexSize" : 49152,        "ok" : 1}MongoDB Enterprise > 
可以在stats中传入比例因子:KB的值为1024,MB为1024*1024,以此类推

MongoDB Enterprise > db.stats(1024){        "db" : "test",        "collections" : 1,        "objects" : 2000,        "avgObjSize" : 33,        "dataSize" : 64.453125,        "storageSize" : 72,        "numExtents" : 0,        "indexes" : 1,        "indexSize" : 48,        "ok" : 1}MongoDB Enterprise > 

3、查看集合信息

db.collection.stats()

4、mongotop 和 mongostat

mongodb自带几个命令行工具,可以每个几秒输出当前的状态。

yangweideMacBook-Pro:~ yangwei$ mongostatinsert query update delete getmore command % dirty % used flushes vsize   res qr|qw ar|aw netIn netOut conn                      time    *0    *0     *0     *0       0     1|0     0.0    0.0       0 2.46G 30.0M   0|0   0|0   79b  18.5k    2 2016-10-14T11:19:53+08:00    *0    *0     *0     *0       0     1|0     0.0    0.0       1 2.46G 30.0M   0|0   0|0   79b  18.5k    2 2016-10-14T11:19:54+08:00    *0    *0     *0     *0       0     1|0     0.0    0.0       0 2.46G 30.0M   0|0   0|0   79b  18.5k    2 2016-10-14T11:19:55+08:00    *0    *0     *0     *0       0     1|0     0.0    0.0       0 2.46G 30.0M   0|0   0|0   79b  18.5k    2 2016-10-14T11:19:56+08:00    *0    *0     *0     *0       0     1|0     0.0    0.0       0 2.46G 30.0M   0|0   0|0   79b  18.5k    2 2016-10-14T11:19:57+08:00    *0    *0     *0     *0       0     1|0     0.0    0.0       0 2.46G 30.0M   0|0   0|0   79b  18.5k    2 2016-10-14T11:19:58+08:00    *0    *0     *0     *0       0     1|0     0.0    0.0       0 2.46G 30.0M   0|0   0|0   79b  18.5k    2 2016-10-14T11:19:59+08:00    *0    *0     *0     *0       0     1|0     0.0    0.0       0 2.46G 30.0M   0|0   0|0   79b  18.5k    2 2016-10-14T11:20:00+08:00    *0    *0     *0     *0       0     1|0     0.0    0.0       0 2.46G 30.0M   0|0   0|0   79b  18.5k    2 2016-10-14T11:20:01+08:00    *0    *0     *0     *0       0     1|0     0.0    0.0       0 2.46G 30.0M   0|0   0|0   79b  18.5k    2 2016-10-14T11:20:02+08:00
mongostat默认每秒输出一次,可传入参数更改时间间隔

yangweideMacBook-Pro:~ yangwei$ mongostat 2 # 每隔2s输出一次

输出说明:

insert query update delete getmore command        每种操作发生的次数

flushes  mongod将数据刷新到磁盘的次数

vsize     mongod正在使用的虚拟内存的大小,通常为数据目录的2倍大小(一次用于映射文件,一次用于日记系统)

res        mongod正在使用的内存的大小,通常该值应该尽量接近机器所有内存的大小。

qr | qw  读写操作队列大小,即有多少读写操作被阻塞,等待进行处理。

ar | aw  活动客户端的数量,即正在进行读写操作的客户端。

netIn     通过网络传输进来的字节数。

netOut  通过网络传输出去的字节数。

conn     此服务器打开的连接数,包括输入和输出的连接。







0 0
原创粉丝点击