常用的参看 mongodb 状态的三个命令 db.stat() db.serverStatus() db.currentOp(),下面分别详细介绍一下
1 db.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 }
2 db.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 }
需要关心的地方:
1 connections当前连接和可用连接数,听过一个同行介绍过,mongodb最大处理到2000个连接就不行了(要根据你的机器性能和业务来设定),所以设大了没意义。设个合理值的话,到达这个值mongodb就拒绝新的连接请求,避免被太多的连接拖垮。
2 indexCounters:btree:misses索引的不命中数,和hits的比例高就要考虑索引是否正确建立。
3 db.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" : { } } },
时间: 2024-11-05 14:40:43