42日43 发表于 2015-10-23 10:15:17

mongodb之查看状态的命令详解

常用的参看 mongodb 状态的三个命令db.stat() db.serverStatus() db.currentOp(),下面分别详细介绍一下

1db.stat()

获取当前数据库的信息,比如Obj总数、数据库总大小、平均Obj大小等

SECONDARY> db.stats()
{
    "db" : "onroad",#库名
    "collections" : 9, #集合数
    "objects" : 130751421,// 记录在数据库中的所有文档总数
    "avgObjSize" : 559.257981907516,   // 数据库中所有文档的平均大小,等于 dataSize/objects
    "dataSize" : 73123775840,// 数据库所有文档的总大小,以字节为单位---> 73G
    "storageSize" : 80531728032,// 分配给每一个文档的磁盘空间   
    "numExtents" : 162,,#事件数
    "indexes" : 14, #索引数
    "indexSize" : 19496636768, #索引大小
    "fileSize" : 332680921088,#文件大小
    "nsSizeMB" : 16,#命名空间文件的大小
    "dataFileVersion" : {#包含 数据库文件的磁盘格式信息 的文档
      "major" : 4, #主要版本号的 磁盘格式数据库的数据文件
      "minor" : 5#次要版本号
    },
    "extentFreeList" : {
      "num" : 436,
      "totalSize" : 229138838864
    },
    "ok" : 1
}


获取当前数据库中集合的信息

> db.gps_point.stats()
{
      "ns" : "onroad.gps_point",#命名空间
      "count" : 51101154, #记录数
      "size" : 31394549796,#大小
      "avgObjSize" : 614,
      "storageSize" : 32212257856,
      "numExtents" : 61,
      "nindexes" : 2,
      "lastExtentSize" : 16224256,
      "paddingFactor" : 1,
      "systemFlags" : 1,
      "userFlags" : 0,
      "totalIndexSize" : 5701353728,
      "indexSizes" : {
               "_id_" : 2655262288,   #索引为_id_的索引大小
               "user_id_1_data_time_-1" : 3046091440
      },
      "capped" : true,#为固定大小集合
      "max" : NumberLong("9223372036854775807"),
      "ok" : 1
}

2db.serverStatus()

获取服务器的状态

详细说明 参考 http://docs.mongoing.com/manual/reference/command/serverStatus.html

PRIMARY> db.serverStatus()
{
    "host" : "cd9a511a2d0e", #主机名
    "version" : "2.6.1", ,#版本号
    "process" : "mongod", #进程名
    "pid" : NumberLong(41), #进程ID
    "uptime" : 3785943,#运行时间
    "uptimeMillis" : NumberLong("3785942955"),
    "uptimeEstimate" : 3755878,
    "localTime" : ISODate("2015-10-16T02:46:27.368Z"),#当前时间
    "asserts" : {#各个断言的数量
      "regular" : 0,
      "warning" : 0,
      "msg" : 0,
      "user" : 58,
      "rollovers" : 0
    },
    "backgroundFlushing" : {
      "flushes" : 63098,#刷新次数
      "total_ms" : 144997713,#刷新花费总时间
      "average_ms" : 2297.97637009097,#平均时间
      "last_ms" : 10913,#最后一次时间
      "last_finished" : ISODate("2015-10-16T02:45:40.363Z")#最后刷新时间
    },
    "connections" : {
      "current" : 1444,#当前连接数
      "available" : 18556,#可用连接数
      "totalCreated" : NumberLong(2429949)
    },
    "cursors" : {
      "note" : "deprecated, use server status metrics",
      "clientCursors_size" : 1,#客户端游标大小
      "totalOpen" : 1,#打开游标数
      "pinned" : 0,
      "totalNoTimeout" : 481,
      "timedOut" : 84#超时时间
    },
    "dur" : {
      "commits" : 27,
      "journaledMB" : 2.711552,
      "writeToDataFilesMB" : 5.213888,
      "compression" : 0.5158220112430492,
      "commitsInWriteLock" : 0,
      "earlyCommits" : 0,
      "timeMs" : {
            "dt" : 3003,
            "prepLogBuffer" : 1,
            "writeToJournal" : 228,
            "writeToDataFiles" : 10,
            "remapPrivateView" : 2
      }
    },
    "extra_info" : {
      "note" : "fields vary by platform",
      "heap_usage_bytes" : 96529464,#堆使用情况(字节)
      "page_faults" : 11253067#页面故障数
    },
    "globalLock" : {
      "totalTime" : NumberLong("3785942955000"),
      "lockTime" : NumberLong("47441423960"),
      "currentQueue" : {
            "total" : 0,
            "readers" : 0,
            "writers" : 0
      },
      "activeClients" : {
            "total" : 0,
            "readers" : 0,
            "writers" : 0
      }
    },
    "indexCounters" : {
      "accesses" : 5980339643,#索引被访问数
      "hits" : 5980339322,#索引命中数
      "misses" : 0,#索引偏差数
      "resets" : 0,#复位数
      "missRatio" : 0#未命中率
    },
    "locks" : {
      "." : {
            "timeLockedMicros" : {
                "R" : NumberLong(1300731481),
                "W" : NumberLong("47441423960")
            },
            "timeAcquiringMicros" : {
                "R" : NumberLong("83350794378"),
                "W" : NumberLong("8842280365")
            }
      },
    },
    "network" : {
      "bytesIn" : 182494603618,#输入数据(byte)
      "bytesOut" : NumberLong("2936449550300"),#输出数据(byte)
      "numRequests" : 600302443 #请求数
    },
    "opcounters" : {
      "insert" : 214538892,#插入操作数
      "query" : 388689,#查询操作数
      "update" : 3462611, #更新操作数
      "delete" : 0, ,#删除操作数
      "getmore" : 188590632,#获取更多的操作数
      "command" : 197825527#其他命令操作数
    },
    "opcountersRepl" : {
      "insert" : 1,
      "query" : 0,
      "update" : 0,
      "delete" : 0,
      "getmore" : 0,
      "command" : 0
    },
    "recordStats" : {
      "accessesNotInMemory" : 8377141,
      "pageFaultExceptionsThrown" : 2926497,
      "admin" : {
            "accessesNotInMemory" : 94,
            "pageFaultExceptionsThrown" : 0
      }
    },
    "repl" : {#复制情况
      "setName" : "c562ca6c-1d72-4c6a-a943-b46fe87e47ca",
      "setVersion" : 105039,
      "ismaster" : true,
      "secondary" : false,
      "hosts" : [
            "10.10.1.1:27017",
            "10.10.1.2:27017"
      ],
      "arbiters" : [
            "10.10.1.2:27017"
      ],
      "primary" : "10.10.1.4:27017",
      "me" : "10.10.1.5:27017"
    },
    "writeBacksQueued" : false,
    "mem" : {#内存情况
      "bits" : 64,#64位操作系统
      "resident" : 4430,#占有物理内存数
      "virtual" : 813370,#占有虚拟内存数
      "supported" : true, #是否支持内存扩展
      "mapped" : 405498,
      "mappedWithJournal" : 810996
    },
    "metrics" : {
      "cursor" : {
            "timedOut" : NumberLong(84),
            "open" : {
                "noTimeout" : NumberLong(481),
                "pinned" : NumberLong(0),
                "total" : NumberLong(1)
            }
      },
      "document" : {
            "deleted" : NumberLong(0),
            "inserted" : NumberLong(214538892),
            "returned" : NumberLong("6735629965"),
            "updated" : NumberLong(6502807)
      },
      "getLastError" : {
            "wtime" : {
                "num" : 0,
                "totalMillis" : 0
            },
            "wtimeouts" : NumberLong(0)
      },
      "operation" : {
            "fastmod" : NumberLong(3483995),
            "idhack" : NumberLong(39),
            "scanAndOrder" : NumberLong(6)
      },
      "queryExecutor" : {
            "scanned" : NumberLong(107218344),
            "scannedObjects" : NumberLong(107217952)
      },
      "record" : {
            "moves" : NumberLong(1604)
      },
      "repl" : {
            "apply" : {
                "batches" : {
                  "num" : 2,
                  "totalMillis" : 8
                },
                "ops" : NumberLong(1)
            },
            "buffer" : {
                "count" : NumberLong(0),
                "maxSizeBytes" : 268435456,
                "sizeBytes" : NumberLong(0)
            },
            "network" : {
                "bytes" : NumberLong(709),
                "getmores" : {
                  "num" : 18,
                  "totalMillis" : 86108
                },
                "ops" : NumberLong(2),
                "readersCreated" : NumberLong(35)
            },
            "preload" : {
                "docs" : {
                  "num" : 0,
                  "totalMillis" : 0
                },
                "indexes" : {
                  "num" : 1,
                  "totalMillis" : 0
                }
            }
      },
      "storage" : {
            "freelist" : {
                "search" : {
                  "bucketExhausted" : NumberLong(0),
                  "requests" : NumberLong(6551285),
                  "scanned" : NumberLong(12001208)
                }
            }
      },
      "ttl" : {
            "deletedDocuments" : NumberLong(0),
            "passes" : NumberLong(63048)
      }
    },
    "ok" : 1
}

需要关心的地方:

1connections当前连接和可用连接数,听过一个同行介绍过,mongodb最大处理到2000个连接就不行了(要根据你的机器性能和业务来设定),所以设大了没意义。设个合理值的话,到达这个值mongodb就拒绝新的连接请求,避免被太多的连接拖垮。

2indexCounters:btree:misses索引的不命中数,和hits的比例高就要考虑索引是否正确建立。


3db.currentOp()

Mongodb 的命令一般很快就完成,但是在一台繁忙的机器或者有比较慢的命令时,你可以通过db.currentOp()获取当前正在执行的操作。

  在没有负载的机器上,该命令基本上都是返回空的

    如果你发现一个操作太长,把数据库卡死的话,可以用这个命令杀死他

> db.killOp("shard3:466404288")

这是一个负载比较高的主从结构的 mongoDB中主库 的结果(insert操作)

> db.currentOp()
{
      "inprog" : [
               {
                     "opid" : 411,
                     "active" : false,
                     "op" : "none",
                     "ns" : "",
                     "query" : {
                              
                     },
                     "desc" : "repl writer worker 1",# 和副本集之间的操作有关
                     "threadId" : "0x7f2f2203d700",
                     "waitingForLock" : false,
                     "numYields" : 0,
                     "lockStats" : {
                              "timeLockedMicros" : {
                                       "r" : NumberLong(0),
                                       "w" : NumberLong(8503)
                              },
                              "timeAcquiringMicros" : {
                                       
                              }
                     }
               },
{
                     "opid" : 1037017522,
                     "active" : true,
                     "secs_running" : 0,
                     "op" : "insert",#操作名
                     "ns" : "onroad.gps_point",#命名空间
                     "insert" : {
                              "_id" : ObjectId("56206e122dda660e74674bd1"),#要插入数据的ID
                              "user_id" : 315936739,#要插入的用户ID
                              "data" : "xxxxxxxx",#要插入的数据
                              "data_time" : NumberLong(1444965431)
                     },
                     "client" : "10.10.1.2:46880",
                     "desc" : "conn2377693",
                     "threadId" : "0x7e6b91b13700",
                     "connectionId" : 2377693,
                     "locks" : {
                              "^onroad" : "W"
                     },
                     "waitingForLock" : true,
                     "numYields" : 0,
                     "lockStats" : {
                              "timeLockedMicros" : {
                                       
                              },
                              "timeAcquiringMicros" : {
                                       
                              }
                     }
               },



页: [1]
查看完整版本: mongodb之查看状态的命令详解