mongodb-查看当前数据库动态

一、查看当前的操作

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$ mongostat
insert 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     此服务器打开的连接数,包括输入和输出的连接。







评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值