MongoDB:查看数据库系统状态

1. MongoDB 系统状态查看

在进行 MongoDB 数据库的运维操作时,需要经常查看数据库的状态,以了解服务器的当前情况。MongoDB 提供了一个系统状态相关的命令——db.serverStatus(),可以返回关于当前服务器的详细信息。

注:在使用 MongoDB 中的 shell 客户端进行交互操作时,在不指定数据库的情况下,shell 默认会访问 test 数据库。

> mongo

MongoDB shell version v4.4.0

connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb

Implicit session: session { "id" : UUID("09e05ba3-2a64-4c82-b635-236a0a4a9a96") }

MongoDB server version: 4.4.0

> db

test

2. 返回系统状态信息

2.1 返回系统状态信息的命令

要查看当前 MongoDB 服务器的状态信息,只需要在 MongoDB shell 中输入如下命令:

> db.serverStatus()

执行这个命令后,将返回当前服务器的各项状态信息,包括进程 ID、版本号、启动时间等,具体信息见下方示意图:

{

"host" : "mongo",

"version" : "4.4.0",

"process" : "mongod",

"pid" : 222,

"uptime" : 71,

"uptimeMillis" : 71091,

"uptimeEstimate" : "1m",

"localTime" : ISODate("2022-01-19T10:40:19.337Z"),

"asserts" : {

"regular" : 0,

"warning" : 0,

"msg" : 0,

"user" : 7,

"rollovers" : 0

},

"connections" : {

"current" : 1,

"available" : 998,

"totalCreated" : 1

},

"storageEngine" : {

"name" : "wiredTiger"

},

"indexCounterStats" : {

"accesses" : 0,

"hits" : 0,

"misses" : 0,

"resets" : 0,

"missRatio" : NaN,

"hitRatio" : NaN

},

"mem" : {

"bits" : 64,

"resident" : 79,

"virtual" : 437

},

"network" : {

"bytesIn" : 836,

"bytesOut" : 3514,

"numRequests" : 17

},

"locks" : {

"%" : {

"global" : {

"acquireCount" : {

"r" : NumberLong(25),

"w" : NumberLong(17)

},

"acquireWaitCount" : {

"r" : NumberLong(1),

"w" : NumberLong(1)

},

"timeAcquiringMicros" : {

"r" : NumberLong(2662),

"w" : NumberLong(4264)

}

},

"admin" : {

"acquireCount" : {

"r" : NumberLong(2)

},

"acquireWaitCount" : {

"r" : NumberLong(1)

},

"timeAcquiringMicros" : {

"r" : NumberLong(6)

}

},

"local" : {

"acquireCount" : {

"r" : NumberLong(25),

"w" : NumberLong(16)

},

"acquireWaitCount" : {

"r" : NumberLong(1),

"w" : NumberLong(1)

},

"timeAcquiringMicros" : {

"r" : NumberLong(514),

"w" : NumberLong(4322)

}

}

}

},

"serverMetrics" : {

"connections" : {

"current" : 0,

"available" : 1000,

"totalCreated" : 1,

"activeInProgress" : 0,

"active" : 1,

"awaitingTopologyChanges" : 0

},

"document" : {

"deleted" : 0,

"inserted" : 609,

"returned" : 0,

"updated" : 0

},

"getLastError" : {

"wtimeouts" : NumberLong(0)

},

"operation" : {

"fastmod" : 0,

"idhack" : 0,

"scanAndOrder" : 0,

"writeConflicts" : 0

},

"queryExecutor" : {

"scanned" : 622,

"scannedObjects" : 609,

"scannedFull" : 0,

"scannedFullObjects" : 0

},

"repl" : {

"apply" : {

"batches" : {

"num" : 0,

"totalMillis" : 0

},

"ops" : 0

},

"buffer" : {

"count" : 0,

"maxSizeBytes" : 268435456,

"sizeBytes" : 0

},

"network" : {

"bytes" : 0,

"getmores" : {

"num" : 0,

"totalMillis" : 0

},

"ops" : 0,

"readersCreated" : 0

},

"oplog" : {

"insert" : {

"num" : 0,

"totalMillis" : 0

}

}

}

},

"storageStats" : {

"index" : {

"accesses" : 0,

"hits" : 0,

"misses" : 0,

"resets" : 0,

"missRatio" : NaN,

"hitRatio" : NaN

},

"freelist" : {

"search" : {

"bucketExhausted" : 0,

"requests" : 0,

"scanned" : 0

}

},

"collections" : {

"num" : 0

},

"fileSize" : 224814336,

"dataSize" : 4019211,

"storageSize" : 34830336,

"nsSizeMB" : 0,

"extentFreeList" : {

"num" : {

"regular" : 0,

"inMemo" : 0

},

"totalSize" : 0,

"totalSizeMb" : 0

},

"indexes" : {

"num" : 0,

"totalSize" : 0,

"memUsage" : {

"counters" : {

"v4" : {

"value" : 0

}

},

"bytes" : 0

},

"gettingStarted" : true

},

"fileOpen" : {

"fd" : {

"open" : 1,

"limit" : 1048576

}

}

}

}

2.2 服务器运行时间和进程 ID

uptime 键告诉我们该服务器已经运行了多长时间,其单位为秒。而 pid 键则告诉我们 MongoDB 进程的进程 ID。

{

"pid" : 222,

"uptime" : 71,

"uptimeMillis" : 71091,

"uptimeEstimate" : "1m",

"localTime" : ISODate("2022-01-19T10:40:19.337Z")

}

2.3 系统内存使用情况

在系统状态信息中,可以通过 mem 键来查看 MongoDB 服务器当前在系统内存中使用的情况。

"mem" : {

"bits" : 64,

"resident" : 79,

"virtual" : 437

}

bits 键用于告诉我们 MongoDB 正在使用 64 位操作系统,因为它的值为 64。

resident 键指的是 MongoDB 进程当前在物理内存中的使用量,以 MB 为单位。

virtual 键指的是 MongoDB 进程当前占用的虚拟内存大小,以 MB 为单位。

2.4 数据库连接情况

connections 键可以告诉我们当前数据库连接池中的连接情况,以及已经创建的连接数量。

"connections" : {

"current" : 1,

"available" : 998,

"totalCreated" : 1

}

current 键是指当前连接池中正被占用的连接数。

available 键是指当前连接池中可用的连接数。

totalCreated 键是指自启动以来,已经创建的数据库连接总数。

2.5 索引使用情况

在系统状态信息中,关于索引使用情况的信息是以 indexCounterStats 键的形式出现的。

"indexCounterStats" : {

"accesses" : 0,

"hits" : 0,

"misses" : 0,

"resets" : 0,

"missRatio" : NaN,

"hitRatio" : NaN

}

accesses 键显示了索引已经被访问的总次数。

hits 键显示了索引被访问并返回结果的总次数。

misses 键显示了索引被访问但未返回结果的总次数。

3. 结论

通过 db.serverStatus() 命令,可以快速查询 MongoDB 的系统状态。掌握此命令的使用方法,对于监控 MongoDB 服务器状态以及性能调优都有着重要的作用。在实际应用中,还可以利用系统状态信息进行服务健康检查,警告阈值的设置等运维管理操作。

数据库标签