serverStatus
在此页面上
- 定义
- 兼容性
- 语法
- 行为
- 初始化
- 包括
mirroredReads
- 输出
- 断言
- bucketCatalog
- catalogStats
- changeStreamPreImages
- 连接
- defaultRWConcern
- electionMetrics
- extra_info
- flowControl
- globalLock
- hedgingMetrics
- indexBuilds
- IndexBulkBuilder
- indexStats
- 实例信息
- 锁
- logicalSessionRecordCache
- mem
- 衡量标准
- 镜像读 (Mirrored Reads)
- 网络
- opLatencies
- opWorkingTime
- opReadConcernCounters
- opWriteConcernCounters
- 运算计数器
- opcountersRepl
- oplogTruncation
- planCache
- queryStats
- queryAnalyzers
- 队列
- 队列信息
- querySettings
- readConcernCounters
- readPreferenceCounters
- repl
- 安全性
- 分片
- shardingStatistics
- shardedIndexConsistency
- 引擎加密
- tcmalloc
- 事务
- transportSecurity
- watchdog
- WiredTiger
定义
serverStatus
serverStatus
命令返回一个提供数据库状态概述的文档。监控应用程序可以定期运行此命令,以收集有关实例的统计信息。
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
注意
所有MongoDB Atlas集群都支持此命令。有关Atlas支持所有命令的信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
该命令具有以下语法:
db.runCommand( { serverStatus: 1 } )
值(即上面的 1
)不会影响该命令的操作。db.serverStatus()
命令将返回大量数据。要从输出中返回特定对象或字段,请在命令后附加对象或字段名称。
例如:
db.runCommand({ serverStatus: 1}).metrics db.runCommand({ serverStatus: 1}).metrics.commands db.runCommand({ serverStatus: 1}).metrics.commands.update
mongosh
为命令 serverStatus
提供 db.serverStatus()
包装器。
行为
默认情况下,serverStatus
在输出中排除:
repl 文档中的一些内容。
mirroredReads 文档。
要包含默认排除的字段,请在命令中指定顶层字段并将其设置为 1
。要排除默认包含的字段,请指定该字段并将其设置为 0。您可以指定顶层字段或嵌入字段。
例如,以下操作会排除输出中的 repl
、metrics
和locks
信息。
db.runCommand( { serverStatus: 1, repl: 0, metrics: 0, locks: 0 } )
例如,以下操作会排除输出中嵌入的 histogram
字段。
db.runCommand( { serverStatus: 1, metrics: { query: { multiPlanner: { histograms: false } } } } )
以下示例在输出中包含所有 repl 信息:
db.runCommand( { serverStatus: 1, repl: 1 } )
初始化
serverStatus
报告的统计信息将在 mongod
服务器重启时重置。
此命令将始终返回一个值,即使对新数据库也是如此。除非特定指标的计数器开始增加,否则,相关命令 db.serverStatus()
并不总是返回值。
运行更新查询后,db.serverStatus()
和db.runCommand({ serverStatus: 1})
都返回相同的值。
{ arrayFilters : Long("0"), failed : Long("0"), pipeline : Long("0"), total : Long("1") }
包括 mirroredReads
默认情况下,输出中不包含 mirroredReads
信息。如要返回 mirroredReads
信息,必须明确指定包含的内容:
db.runCommand( { serverStatus: 1, mirroredReads: 1 } )
输出
注意
输出字段因 MongoDB 的版本、底层操作系统平台、存储引擎和节点类型(包括 mongos
、mongod
或副本集节点)不同而异。
有关特定于 MongoDB 版本的 serverStatus
输出,请参阅 MongoDB 手册的相应版本。
断言
asserts: { regular: <num>, warning: <num>, msg: <num>, user: <num>, rollovers: <num> },
asserts
一个文档,其中报告自 MongoDB 进程启动以来引发的断言数量。断言是对数据库运行时发生的错误的内部检查,可以帮助诊断 MongoDB 服务器的问题。非零断言值表示断言错误,这种错误并不常见,也不是什么值得立即关注的问题。生成断言的错误可以记录在日志文件中,或直接返回到客户端应用程序以获取更多信息。
asserts.user
自上次启动 MongoDB 进程以来发生的“用户断言”的数量。这些是用户可能生成的错误,例如磁盘空间不足或重复密钥。您可以通过修复应用程序或部署的问题来防止这些断言。检查日志文件以获取有关这些消息的详细信息。
asserts.rollovers
自 MongoDB 进程上次启动以来,断言计数器翻转的次数。在 2 30 次断言之后,计数器将翻转为零。使用该值可为
asserts
数据结构中的其他值提供上下文。
bucketCatalog
bucketCatalog: { numBuckets: <num>, numOpenBuckets: <num>, numIdleBuckets: <num>, memoryUsage: <num>, numBucketInserts: <num>, numBucketUpdates: <num>, numBucketsOpenedDueToMetadata: <num>, numBucketsClosedDueToCount: <num>, numBucketsClosedDueToSchemaChange: <num>, numBucketsClosedDueToSize: <num>, numBucketsClosedDueToTimeForward: <num>, numBucketsClosedDueToTimeBackward: <num>, numBucketsClosedDueToMemoryThreshold: <num>, numCommits: <num>, numMeasurementsGroupCommitted: <num>, numWaits: <num>, numMeasurementsCommitted: <num>, avgNumMeasurementsPerCommit: <num>, numBucketsClosedDueToReopening: <num>, numBucketsArchivedDueToMemoryThreshold: <num>, numBucketsArchivedDueToTimeBackward: <num>, numBucketsReopened: <num>, numBucketsKeptOpenDueToLargeMeasurements: <num>, numBucketsClosedDueToCachePressure: <num>, numBucketsFrozen: <num>, numCompressedBucketsConvertedToUnsorted: <num>, numBucketsFetched: <num>, numBucketsQueried: <num>, numBucketFetchesFailed: <num>, numBucketQueriesFailed: <num>, numBucketReopeningsFailed: <num>, numDuplicateBucketsReopened: <num>, stateManagement: { bucketsManaged: <num>, currentEra: <num>, erasWithRemainingBuckets: <num>, trackedClearOperations: <num> } }
版本 5.0 中的新增功能。
一个文档,其中报告与时间序列集合的内部存储相关的指标。
bucketCatalog
返回以下指标:
衡量标准 | 说明 |
---|---|
numBuckets | 跟踪的存储桶总数。应等于 numOpenBuckets 与numArchivedBuckets 之和。 |
numOpenBuckets | 缓存中存储有完整表示形式、准备接收新文档的跟踪存储桶的数量。 |
numIdleBuckets | 已打开且当前没有待处理的未提交文档插入的存储桶的数量。 numOpenBuckets 的子集。 |
numArchivedBuckets | 缓存中存储的具有最小表示形式的跟踪存储桶的数量,这些存储桶可以有效地重新打开以接收新文档。 |
memoryUsage | 内部分桶数据结构使用的字节数。 |
numBucketInserts | 创建的新存储桶的数量。 |
numBucketUpdates | 更新现有存储桶以包含其他文档的次数。 |
numBucketsOpenedDueToMetadata | 由于到达的文档的 metaField 值与任何当前打开的存储桶都不匹配而打开的存储桶的数量。 |
numBucketsClosedDueToCount | 因达到文档计数限制而关闭的存储桶的数量。 |
numBucketsClosedDueToSchemaChange | 由于传入文档的模式与打开的存储桶中的文档的模式不兼容而关闭的存储桶的数量。 |
numBucketsClosedDueToSize | 由于传入文档会使存储桶超过其大小限制而关闭的存储桶的数量。 |
numBucketsClosedDueToTimeForward | 由于具有 timeField 值的文档晚于该metaField 值的所有当前打开存储桶的最长时间而到达的存储桶的数量。 |
numBucketsClosedDueToTimeBackward | 由于具有 timeField 值的文档在该metaField 值的所有当前打开存储桶的最小时间之前到达而关闭的存储桶的数量。 |
numBucketsClosedDueToMemoryThreshold | 由于活动存储桶设立不符合允许的存储桶目录缓存大小而关闭的存储桶数量。 |
numCommits | 时间序列集合的存储桶级提交次数。 |
numMeasurementsGroupCommitted | 包含来自并发插入命令的测量值的提交次数。 |
numWaits | 操作等待另一个线程重新打开存储桶或完成群组提交的次数。 |
numMeasurementsCommitted | 提交给时间序列集合的文档数量。 |
avgNumMeasurementsPerCommit | 每次提交的平均文档数。 |
numBucketsClosedDueToReopening | 由于重新打开合适的存储桶而关闭的存储桶的数量。 |
numBucketsArchivedDueToMemoryThreshold | 由于活动存储桶设立不符合允许的存储桶目录缓存大小而存档的存储桶数量。 |
numBucketsArchivedDueToTimeBackward | 由于具有 timeField 值的文档在所有当前打开的存储桶达到该metaField 值的最小时间之前到达而存档的存储桶的数量。 |
numBucketsReopened | 由于到达的文档与任何打开的存储桶都不匹配,但与现有的非满存储桶匹配而重新打开的存储桶的数量。 |
numBucketsKeptOpenDueToLargeMeasurements | 由于大小而本应关闭但由于未包含实现合理压缩所需的最小数量文档而保持打开状态的存储桶的数量。 |
numBucketsClosedDueToCachePressure | 因大小超过存储桶目录的动态存储桶大小限制而关闭的存储桶的数量,该限制源自可用存储引擎缓存大小和 numBuckets 。此限制不同于最大存储桶大小限制。 |
numBucketsFrozen | 冻结桶的数量。如果尝试压缩存储桶会损坏其内容,则存储桶会被冻结。 |
numCompressedBucketsConvertedToUnsorted | 包含未按各自 timeField 值排序的文档的压缩存储桶的数量。 |
numBucketsFetched | 获取用于检查是否适合重新打开的已存档存储桶的数量。 |
numBucketsQueried | 为确定是否可以保存传入文档而查询的存储桶总数。 |
numBucketFetchesFailed | 获取的不适合重新打开的已存档存储桶的数量。 |
numBucketQueriesFailed | 由于缺乏候选可用性而失败的对合适的开放存储桶的查询次数。 |
numBucketReopeningsFailed | 由于并发操作冲突、格式不正确的存储桶等原因而尝试重新打开存储桶但失败的次数。 |
numDuplicateBucketsReopened | 与当前打开的存储桶重复的重新打开的存储桶的数量。 |
stateManagement | 跟踪存储桶目录状态信息的文档。 |
stateManagement.bucketsManaged | 为进行冲突管理而跟踪的存储桶总数。这包括存储桶目录中打开的存储桶以及任何直接写入的存储桶,包括通过更新和删除命令直接写入的存储桶。 |
stateManagement.currentEra | 存储桶目录的当前纪元。存储桶目录从0纪元开始,并在存储桶被清除时递增。尝试向存储桶插入数据会导致存储桶在已被清除的情况下被删除,或者会更新到当前纪元。 |
stateManagement.erasWithRemainingBuckets | 具有跟踪存储桶的era 数量。 |
stateManagement.trackedClearOperations | 一设立存储桶已被清除,但这些存储桶的删除被推迟的次数。发生这种情况的原因集合删除集合、移动分分片的数据块中的数据段或选举等事件。 |
catalogStats
5.1 版本中的新功能。
catalogStats: { collections: <num>, capped: <num>, views: <num>, timeseries: <num>, internalCollections: <num>, internalViews: <num> }
changeStreamPreImages
版本 5.0 中的新增功能。
changeStreamPreImages : { purgingJob : { totalPass : <num>, docsDeleted : <num>, bytesDeleted : <num>, scannedCollections : <num>, scannedInternalCollections : <num>, maxStartWallTimeMillis : <num>, timeElapsedMillis : <num>, }, expireAfterSeconds : <num> }
一个文档,其中报告与change stream前像相关的指标。
changeStreamPreImages.purgingJob
版本 7.1 中的新增内容。
一个文档,其中报告与change stream前映像的清除作业相关的指标。清除作业是系统用于异步删除前像的背景进程。
changeStreamPreImages.purgingJob
字段返回以下指标:衡量标准说明totalPass
清除作业完成的删除遍历总数。docsDeleted
清除作业删除的前图像文档的累计数量。bytesDeleted
清除作业从所有前图像collection中删除的所有文档的累积大小(以字节为单位)。scannedCollections
清除作业扫描的前图像collection的累计数量。
在单租户环境中,此数字与
totalPass
相同,因为每个租户都有一个前图像collection。scannedInternalCollections
清除作业扫描的内部前图像集合的累计数量。 内部集合是存储在config.system.preimages
中的前像集合内的集合。maxStartWallTimeMillis
从每个前图像collection的第一个文档开始的最大挂起时间(以毫秒为单位)。timeElapsedMillis
清除作业执行所有删除操作的累积时间(以毫秒为单位)。
changeStreamPreImages.expireAfterSeconds
版本 7.1 中的新增内容。
MongoDB 保留前像的时间(以秒为单位)。 如果未定义
expireAfterSeconds
,则该指标不会出现在serverStatus
输出中。
连接
connections : { current : <num>, available : <num>, totalCreated : <num>, rejected : <num>, // Added in MongoDB 6.3 active : <num>, threaded : <num>, exhaustIsMaster : <num>, exhaustHello : <num>, awaitingTopologyChanges : <num>, loadBalanced : <num> },
connections.current
从客户端到数据库服务器的传入连接数。该数字包括当前 Shell 会话。考虑
connections.available
的值,为该数据添加更多上下文。
connections.available
可用的未使用传入连接数。将此值与
connections.current
的值结合,可了解数据库的连接负载;将此值与 UNIXulimit
自管理部署设置文档结合,可了解有关可用连接系统阈值的更多信息。
connections.rejected
6.3 版本中的新功能。
服务器因服务器没有能力接受更多连接或达到
net.maxIncomingConnections
设置而拒绝的传入连接的数量。
connections.exhaustIsMaster
最后一个请求是指定 exhausAllowed 的
isMaster
请求的连接的数量。注意
如果运行的是 MongoDB 5.0 或更高版本,请勿使用
isMaster
命令。请改用hello
。
connections.exhaustHello
最后请求是指定 ExhaustAllowed 的
hello
请求的连接的数量。版本 5.0 中的新增功能。
defaultRWConcern
defaultRWConcern
部分提供有关全局默认读关注或写关注设置的本地副本的信息。数据可能已过时或已过期。有关更多信息,请参阅 getDefaultRWConcern
。
defaultRWConcern : { defaultReadConcern : { level : <string> }, defaultWriteConcern : { w : <string> | <int>, wtimeout : <int>, j : <bool> }, defaultWriteConcernSource: <string>, defaultReadConcernSource: <string>, updateOpTime : Timestamp, updateWallClockTime : Date, localUpdateWallClockTime : Date }
defaultRWConcern.defaultReadConcern
上次已知的全局默认读关注设置。
如果
serverStatus
未返回此字段,则全局默认读关注尚未设置或尚未传播到实例。
defaultRWConcern.defaultReadConcern.level
上次已知的全局默认读关注级别设置。
如果
serverStatus
未返回此字段,则表示该设置的全局默认值尚未设置或尚未传播到实例。
defaultRWConcern.defaultWriteConcern
上次已知的全局默认写关注设置。
如果
serverStatus
未返回此字段,则全局默认写关注尚未设置或者 尚未传播到实例。
defaultRWConcern.defaultWriteConcern.w
上次已知的全局默认 w 设置。
如果
serverStatus
未返回此字段,则表示该设置的全局默认值尚未设置或尚未传播到实例。
defaultRWConcern.defaultWriteConcern.wtimeout
上次已知的全局默认 wtimeout 设置。
如果
serverStatus
未返回此字段,则表示该设置的全局默认值尚未设置或尚未传播到实例。
defaultRWConcern.defaultWriteConcernSource
默认写关注的来源。默认情况下,该值为
"implicit"
。使用setDefaultRWConcern
完成设置默认写关注后,该值即变为"global"
。版本 5.0 中的新增功能。
defaultRWConcern.defaultReadConcernSource
默认读关注的来源。默认情况下,该值为
"implicit"
。使用setDefaultRWConcern
完成设置默认读关注后,该值即变为"global"
。版本 5.0 中的新增功能。
defaultRWConcern.updateOpTime
该实例上次更新其任何全局读关注或写关注设置副本的时间戳。如果没有
defaultRWConcern.defaultReadConcern
和defaultRWConcern.defaultWriteConcern
字段,则此字段指示上次取消设置默认值的时间戳。
defaultRWConcern.updateWallClockTime
该实例上次更新其任何全局读关注或写关注设置副本的挂钟时间。如果没有
defaultRWConcern.defaultReadConcern
和defaultRWConcern.defaultWriteConcern
字段,则此字段指示上次取消设置默认值的时间。
defaultRWConcern.localUpdateWallClockTime
该实例上次更新其任何全局读关注或写关注设置副本的本地系统挂钟时间。如果此字段是
defaultRWConcern
下的唯一 字段,则该实例从不了解全局默认读关注或写关注设置。
electionMetrics
electionMetrics
部分提供有关此 mongod
实例试图成为主节点而调用的选举的信息:
electionMetrics : { stepUpCmd : { called : Long("<num>"), successful : Long("<num>") }, priorityTakeover : { called : Long("<num>"), successful : Long("<num>") }, catchUpTakeover : { called : Long("<num>"), successful : Long("<num>") }, electionTimeout : { called : Long("<num>"), successful : Long("<num>") }, freezeTimeout : { called : Long("<num>"), successful : Long("<num>") }, numStepDownsCausedByHigherTerm : Long("<num>"), numCatchUps : Long("<num>"), numCatchUpsSucceeded : Long("<num>"), numCatchUpsAlreadyCaughtUp : Long("<num>"), numCatchUpsSkipped : Long("<num>"), numCatchUpsTimedOut : Long("<num>"), numCatchUpsFailedWithError : Long("<num>"), numCatchUpsFailedWithNewTerm : Long("<num>"), numCatchUpsFailedWithReplSetAbortPrimaryCatchUpCmd : Long("<num>"), averageCatchUpOps : <double> }
electionMetrics.priorityTakeover
mongod
实例调用的选举指标,因为其priority
高于主节点。electionMetrics.priorityTakeover
既包括调用的选举次数,也包括成功的选举次数。
electionMetrics.catchUpTakeover
mongod
实例调用的选举指标,因为它比主节点的日期更近。catchUpTakeover
既包括调用的选举次数,也包括成功的选举次数。
electionMetrics.electionTimeout
mongod
实例调用的选举指标,因为它无法在settings.electionTimeoutMillis
内到达主节点。electionTimeout
既包括调用的选举次数,也包括成功的选举次数。
electionMetrics.freezeTimeout
mongod
实例在其freeze period
(在此期间,节点无法寻求选举)到期后调用的选举指标。electionMetrics.freezeTimeout
既包括调用的选举次数,也包括成功的选举次数。
electionMetrics.numStepDownsCausedByHigherTerm
mongod
实例因看到更高任期(具体来说,其他节点参与了额外选举)而降级的次数。
electionMetrics.numCatchUps
作为新当选主节点的
mongod
实例必须赶上已知最高 oplog 条目的选举次数。
electionMetrics.numCatchUpsSucceeded
作为新当选主节点的
mongod
实例成功赶上已知最高 oplog 条目的次数。
electionMetrics.numCatchUpsAlreadyCaughtUp
作为新当选主节点的
mongod
实例由于当选时已被赶上而结束其追赶进程的次数。
electionMetrics.numCatchUpsSkipped
作为新当选主节点的
mongod
实例跳过追赶进程的次数。
electionMetrics.numCatchUpsTimedOut
作为新当选主节点的
mongod
实例由于settings.catchUpTimeoutMillis
限制而结束其追赶进程的次数。
electionMetrics.numCatchUpsFailedWithReplSetAbortPrimaryCatchUpCmd
由于
mongod
收到replSetAbortPrimaryCatchUp
命令而导致新当选主节点的追赶进程结束的次数。
extra_info
extra_info : { note : 'fields vary by platform', page_faults : <num> },
extra_info.page_faults
页面错误总数。
extra_info.page_faults
计数器在性能不佳的时刻可能会急剧增加,并且可能与内存环境有限和数据集较大相关。有限且偶发的页面错误并不一定表明存在问题。Windows 区分涉及磁盘 I/O 的“硬”页面错误与仅需要在内存中移动页面的“软”页面错误。MongoDB 在该统计中同时计入硬页面错误和软页面错误。
flowControl
flowControl : { enabled : <boolean>, targetRateLimit : <int>, timeAcquiringMicros : Long("<num>"), locksPerKiloOp : <double>, sustainerRate : <int>, isLagged : <boolean>, isLaggedCount : <int>, isLaggedTimeMicros : Long("<num>") },
flowControl
返回流量控制统计信息的文档。启用流量控制后,随着
majority commit
点滞后逐渐接近flowControlTargetLagSeconds
,主节点上的写入操作先获取票证才能获取锁。因此,在主节点上运行时,返回的指标很有意义。
flowControl.enabled
一个布尔值,用于表示流量控制处于启用状态 (
true
) 还是禁用状态 (false
)。另请参阅
enableFlowControl
。
flowControl.isLagged
在主节点上运行时,为一个布尔值,指示流量控制是否已启用。当多数提交延迟大于配置的
flowControlTargetLagSeconds
的某个百分比时,将会启用流量控制。不启用流量控制会导致复制延迟。如果副本集没有收到足够的负载来启用流量控制,无响应的从节点就可能出现延迟,从而使
flowControl.isLagged
的值为false
。有关其他信息,请参阅流量控制。
flowControl.isLaggedCount
在主节点上运行时,流量控制自上次重启以来启用的次数。当多数提交延迟大于
flowControlTargetLagSeconds
的某个百分比时,将会启用流量控制。在从节点上运行时,返回的数字是占位符。
flowControl.isLaggedTimeMicros
在主节点上运行时,流量控制自上次重启以来启用所用的时间。当多数提交延迟大于
flowControlTargetLagSeconds
的某个百分比时,将会启用流量控制。在从节点上运行时,返回的数字是占位符。
globalLock
globalLock : { totalTime : Long("<num>"), currentQueue : { total : <num>, readers : <num>, writers : <num> }, activeClients : { total : <num>, readers : <num>, writers : <num> } },
globalLock
一个文档,其中报告数据库锁定状态。
一般来说,锁文档会提供有关锁使用情况的更详细数据。
globalLock.totalTime
自数据库上次启动并创建
globalLock
以来的时间(以微秒为单位)。这约等于服务器的总计正常运行时间。
globalLock.currentQueue.total
排队等待锁定的操作总数(即
globalLock.currentQueue.readers
和globalLock.currentQueue.writers
的总和)。不必担心持续较小的队列,特别是短操作的队列。
globalLock.activeClients
读取者和写入者信息为该数据提供了上下文。
globalLock.activeClients
提供已连接客户端数量以及这些客户端执行的读写操作相关信息的文档。
利用该数据为
globalLock.currentQueue
数据提供上下文。
hedgingMetrics
重要
从 MongoDB 8.0开始,对冲读已弃用。 默认情况下,指定读取偏好nearest
的查询不再使用对冲读。 如果您明确指定对冲读,MongoDB 会执行对冲读并记录警告。
仅适用于 mongos
实例。
hedgingMetrics : { numTotalOperations : <num>, numTotalHedgedOperations : <num>, numAdvantageouslyHedgedOperations : <num> },
indexBuilds
indexBuilds : { total : <num>, killedDueToInsufficientDiskSpace : <num>, failedDueToDataCorruption : <num> },
indexBuilds
提供服务器上次启动后索引构建的指标。
indexBuilds.killedDueToInsufficientDiskSpace
由于磁盘空间不足而结束的索引构建总数。 从 MongoDB 7.1 开始,您可以使用
indexBuildMinAvailableDiskSpaceMB
参数设置构建索引所需的最小磁盘空间。版本 7.1 中的新增内容。
IndexBulkBuilder
indexBulkBuilder: { count: <long>, resumed: <long>, filesOpenedForExternalSort: <long>, filesClosedForExternalSort: <long>, spilledRanges: <long>, bytesSpilledUncompressed: <long>, bytesSpilled: <long>, numSorted: <long>, bytesSorted: <long>, memUsage: <long> }
indexBulkBuilder
提供索引批量构建器操作的指标。使用这些指标可诊断使用
createIndexes
构建索引的问题、初始同步期间的集合克隆、启动后恢复的索引构建,以及外部排序器磁盘使用情况的统计信息。
indexBulkBuilder.filesClosedForExternalSort
外部排序器关闭文件句柄以将数据溢写到磁盘的次数。将此值与
filesOpenedForExternalSort
相结合,可确定外部排序器正在使用的打开文件句柄数。
indexBulkBuilder.filesOpenedForExternalSort
外部排序器打开文件句柄以将数据溢写到磁盘的次数。将此值与
filesClosedForExternalSort
相结合,可确定外部排序器正在使用的打开文件句柄数。
indexStats
indexStats: { count: Long("<num>"), features: { '2d': { count: Long("<num>"), accesses: Long("<num>") }, '2dsphere': { count: Long("<num>"), accesses: Long("<num>") }, '2dsphere_bucket': { count: Long("<num>"), accesses: Long("<num>") }, collation: { count: Long("<num>"), accesses: Long("<num>") }, compound: { count: Long("<num>"), accesses: Long("<num>") }, hashed: { count: Long("<num>"), accesses: Long("<num>") }, id: { count: Long("<num>"), accesses: Long("<num>") }, normal: { count: Long("<num>"), accesses: Long("<num>") }, partial: { count: Long("<num>"), accesses: Long("<num>") }, single: { count: Long("<num>"), accesses: Long("<num>") }, sparse: { count: Long("<num>"), accesses: Long("<num>") }, text: { count: Long("<num>"), accesses: Long("<num>") }, ttl: { count: Long("<num>"), accesses: Long("<num>") }, unique: { count: Long("<num>"), accesses: Long("<num>") }, wildcard: { count: Long("<num>"), accesses: Long("<num>") } } }
实例信息
host : <string>, advisoryHostFQDNs : <array>, version : <string>, process : <'mongod'|'mongos'>, service : <'router'|'shard'>, pid : Long("<num>"), uptime : <num>, uptimeMillis : Long("<num>"), uptimeEstimate : Long("<num>"), localTime : ISODate("<Date>"),
锁
locks : { <type> : { acquireCount : { <mode> : Long("<num>"), ... }, acquireWaitCount : { <mode> : Long("<num>"), ... }, timeAcquiringMicros : { <mode> : Long("<num>"), ... }, deadlockCount : { <mode> : Long("<num>"), ... } }, ...
locks
报告每个锁
<type>
以及锁<modes>
上的数据的文档。可能的锁
<types>
是:锁类型说明ParallelBatchWriterMode
代表并行批量写入模式的锁。
在早期版本中,PBWM 信息作为
Global
锁信息的一部分进行报告。ReplicationStateTransition
表示副本集节点状态转换采用的锁。Global
代表全局锁定。Database
代表数据库锁。Collection
代表集合锁。Mutex
代表互斥锁。Metadata
代表元数据锁。DDLDatabase
表示DDL数据库锁。
版本 7.1 中的新增内容。
DDLCollection
表示DDLcollection锁。
版本 7.1 中的新增内容。
oplog
表示 oplog 上的锁。可能的
<modes>
是:锁模式说明R
代表共享(S)锁。W
代表独占 (X) 锁。r
代表意向共享(IS)锁。w
代表意图独占 (IX) 锁。所有值均为
Long()
类型。
locks.<type>.acquireWaitCount
由于锁以冲突模式被占用而导致
locks.<type>.acquireCount
锁获取遇到等待的次数。
locks.<type>.timeAcquiringMicros
锁获取的累积等待时间(以微秒为单位)。
locks.<type>.timeAcquiringMicros
除以locks.<type>.acquireWaitCount
得出特定锁模式的大致平均等待时间。
logicalSessionRecordCache
logicalSessionRecordCache : { activeSessionsCount : <num>, sessionsCollectionJobCount : <num>, lastSessionsCollectionJobDurationMillis : <num>, lastSessionsCollectionJobTimestamp : <Date>, lastSessionsCollectionJobEntriesRefreshed : <num>, lastSessionsCollectionJobEntriesEnded : <num>, lastSessionsCollectionJobCursorsClosed : <num>, transactionReaperJobCount : <num>, lastTransactionReaperJobDurationMillis : <num>, lastTransactionReaperJobTimestamp : <Date>, lastTransactionReaperJobEntriesCleanedUp : <num>, sessionCatalogSize : <num> },
logicalSessionRecordCache
提供有关服务器会话缓存的指标。
logicalSessionRecordCache.sessionsCollectionJobCount
跟踪刷新进程在
config.system.sessions
集合上运行的次数的数字。
logicalSessionRecordCache.lastSessionsCollectionJobCursorsClosed
上次刷新
config.system.sessions
集合时关闭的游标数。
logicalSessionRecordCache.transactionReaperJobCount
跟踪事务记录清理过程在
config.transactions
集合上运行次数的数字。
logicalSessionRecordCache.lastTransactionReaperJobEntriesCleanedUp
在上次清理事务记录期间删除的
config.transactions
集合中的条目数。
logicalSessionRecordCache.sessionCatalogSize
- 对于
mongod
实例, config.transactions
条目的内存缓存的大小。这对应于会话在localLogicalSessionTimeoutMinutes
内未过期的可重试写入或事务。
- 对于
- 对于
mongos
实例, - 包含最近
localLogicalSessionTimeoutMinutes
间隔内的事务的会话的内存缓存数量。
- 对于
mem
mem : { bits : <int>, resident : <int>, virtual : <int>, supported : <boolean> },
mem
一个文档,其中报告
mongod
的系统架构和当前内存使用情况。
mem.resident
mem.resident
的值大致等于数据库进程当前使用的 RAM 量,以兆字节 (MiB) 为单位。在正常使用期间,此值往往会增长。在专用数据库服务器中,此数字往往接近系统内存总量。
mem.virtual
mem.virtual
显示mongod
进程使用的虚拟内存量,以兆字节 (MiB) 为单位。
mem.supported
指示底层系统是否支持扩展内存信息的布尔值。如果此值为 false 且系统不支持扩展内存信息,则数据库服务器可能无法访问其他
mem
值。
mem.note
字段
mem.note
出现的条件:mem.supported
为 false。mem.note
字段包含文本:'not all mem info support on this platform'
。
衡量标准
metrics : { abortExpiredTransactions: { passes: <integer> }, apiVersions: { <appName1>: <string>, <appName2>: <string>, <appName3>: <string> }, aggStageCounters : { <aggregation stage> : Long("<num>") }, changeStreams: { largeEventsFailed: Long("<num>"), largeEventsSplit: Long("<num>"), showExpandedEvents: Long("<num>") }, commands: { <command>: { failed: Long("<num>"), validator: { total: Long("<num>"), failed: Long("<num>"), jsonSchema: Long("<num>") }, total: Long("<num>"), rejected: Long("<num>") } }, cursor : { moreThanOneBatch : Long("<num>"), timedOut : Long("<num>"), totalOpened : Long("<num>"), lifespan : { greaterThanOrEqual10Minutes : Long("<num>"), lessThan10Minutes : Long("<num>"), lessThan15Seconds : Long("<num>"), lessThan1Minute : Long("<num>"), lessThan1Second : Long("<num>"), lessThan30Seconds : Long("<num>"), lessThan5Seconds : Long("<num>") }, open : { noTimeout : Long("<num>"), pinned : Long("<num>"), multiTarget : Long("<num>"), singleTarget : Long("<num>"), total : Long("<num>") } }, document : { deleted : Long("<num>"), inserted : Long("<num>"), returned : Long("<num>"), updated : Long("<num>") }, dotsAndDollarsFields : { inserts : Long("<num>"), updates : Long("<num>") }, getLastError : { wtime : { num : <num>, totalMillis : <num> }, wtimeouts : Long("<num>"), default : { unsatisfiable : Long("<num>"), wtimeouts : Long("<num>") } }, mongos : { cursor : { moreThanOneBatch : Long("<num>"), totalOpened : Long("<num>") } }, network : { // Added in MongoDB 6.3 totalEgressConnectionEstablishmentTimeMillis : Long("<num>"), totalIngressTLSConnections : Long("<num>"), totalIngressTLSHandshakeTimeMillis : Long("<num>"), totalTimeForEgressConnectionAcquiredToWireMicros : Long("<num>"), totalTimeToFirstNonAuthCommandMillis : Long("<num>") }, operation : { killedDueToClientDisconnect : Long("<num>"), // Added in MongoDB 7.1 killedDueToDefaultMaxTimeMSExpired : Long("<num>"), killedDueToMaxTimeMSExpired : Long("<num>"), // Added in MongoDB 7.2 numConnectionNetworkTimeouts : Long("<num>"), // Added in MongoDB 6.3 scanAndOrder : Long("<num>"), totalTimeWaitingBeforeConnectionTimeoutMillis : Long("<num>"), // Added in MongoDB 6.3 unsendableCompletedResponses : Long("<num>"), // Added in MongoDB 7.1 writeConflicts : Long("<num>") }, operatorCounters : { expressions : { <command> : Long("<num>") }, match : { <command> : Long("<num>") } }, query: { allowDiskUseFalse: Long("<num>"), updateOneOpStyleBroadcastWithExactIDCount: Long("<num>"), lookup: { hashLookup: Long("<num>"), hashLookupSpillToDisk: Long("<num>"), indexedLoopJoin: Long("<num>"), nestedLoopJoin: Long("<num>") }, multiPlanner: { classicCount: Long("<num>"), classicMicros: Long("<num>"), classicWorks: Long("<num>"), sbeCount: Long("<num>"), sbeMicros: Long("<num>"), sbeNumReads: Long("<num>"), histograms: { classicMicros: [ { lowerBound: Long("0"), count: Long("<num>") }, { < Additional histogram groups not shown. > }, { lowerBound: Long("1073741824"), count: Long("<num>")> }> ], classicNumPlans: [ { lowerBound: Long("0"), count: Long("<num>") }, { < Additional histogram groups not shown. > }, { lowerBound: Long("32"), count: Long("<num>") } ], classicWorks: [ { lowerBound: Long("0"), count: Long("<num>") }, { < Additional histogram groups not shown. > }, { lowerBound: Long("32768"), count: Long("<num>") } ], sbeMicros: [ { lowerBound: Long("0"), count: Long("<num>") }, { < Additional histogram groups not shown. > }, { lowerBound: Long("1073741824"), count: Long("<num>") } ], sbeNumPlans: [ { lowerBound: Long("0"), count: Long("<num>") }, { < Additional histogram groups not shown. > }, { lowerBound: Long("32"), count: Long("<num>") } ], sbeNumReads: [ { lowerBound: Long("0"), count: Long("<num>") }, { < Additional histogram groups not shown. > }, { lowerBound: Long("32768"), count: Long("<num>") } ] } }, planCache: { classic: { hits: Long("<num>"), misses: Long("<num>") }, sbe: { hits: Long("<num>"), misses: Long("<num>") } }, queryFramework: { aggregate: { classicHybrid: Long("<num>"), classicOnly: Long("<num>"), cqf: Long("<num>"), sbeHybrid: Long("<num>"), sbeOnly: Long("<num>") }, find: { classic: Long("<num>"), cqf: Long("<num>"), sbe: Long("<num>") } } }, queryExecutor: { scanned : Long("<num>"), scannedObjects : Long("<num>"), collectionScans : { nonTailable : Long("<num>"), total : Long("<num>") } }, record : { moves : Long("<num>") }, repl : { executor : { pool : { inProgressCount : <num> }, queues : { networkInProgress : <num>, sleepers : <num> }, unsignaledEvents : <num>, shuttingDown : <boolean>, networkInterface : <string> }, apply : { attemptsToBecomeSecondary : Long("<num>"), batchSize: <num>, batches : { num : <num>, totalMillis : <num> }, ops : Long("<num>") }, write : { batchSize: <num>, batches : { num : <num>, totalMillis : <num> } }, buffer : { write: { count : Long("<num>"), maxSizeBytes : Long("<num>"), sizeBytes : Long("<num>") }, apply: { count : Long("<num>"), sizeBytes : Long("<num>"), maxSizeBytes : Long("<num>"), maxCount: Long("<num>") }, }, initialSync : { completed : Long("<num>"), failedAttempts : Long("<num>"), failures : Long("<num>") }, network : { bytes : Long("<num>"), getmores : { num : <num>, totalMillis : <num> }, notPrimaryLegacyUnacknowledgedWrites : Long("<num>"), notPrimaryUnacknowledgedWrites : Long("<num>"), oplogGetMoresProcessed : { num : <num>, totalMillis : <num> }, ops : Long("<num>"), readersCreated : Long("<num>"), replSetUpdatePosition : { num : Long("<num>") } }, reconfig : { numAutoReconfigsForRemovalOfNewlyAddedFields : Long("<num>") }, stateTransition : { lastStateTransition : <string>, totalOperationsKilled : Long("<num>"), totalOperationsRunning : Long("<num>") }, syncSource : { numSelections : Long("<num>"), numTimesChoseSame : Long("<num>"), numTimesChoseDifferent : Long("<num>"), numTimesCouldNotFind : Long("<num>") }, waiters : { opTime : Long("<num>"), replication : Long("<num>") } }, storage : { freelist : { search : { bucketExhausted : <num>, requests : <num>, scanned : <num> } } }, ttl : { deletedDocuments : Long("<num>"), passes : Long("<num>"), subPasses : Long("<num>") } }
metrics
一个返回各种统计信息的文档,这些信息反映正在运行的
mongod
实例的当前使用情况和状态。
metrics.abortExpiredTransactions.passes
表示中止早于
transactionLifetimeLimitSeconds
参数的事务的成功传递次数。如果
passes
值停止递增,则表示abortExpiredTransactions
线程可能被卡住。
metrics.aggStageCounters
一个文档,其中报告聚合管道阶段的使用情况。
metrics.aggStageCounters
中的字段是聚合管道阶段的名称。对于每个管道阶段,serverStatus
报告该阶段的执行次数。已在版本 5.2(以及 5.0.6)中更新。
metrics.apiVersions
包含以下内容的文档:
每个客户端应用程序的名称
每个应用程序在过去 24 小时内配置的 Stable API 版本
查看
metrics.apiVersions
时请考虑以下事项:每个
appname
可能的返回值为:default
:该命令是在未指定 Stable API 版本的情况下发出的。1
:该命令是使用 Stable API 版本 1 发出的。
注意
可能会看到
appname
的两个返回值,因为可以在命令级别指定 Stable API 版本。某些命令可能是在没有 Stable API 版本的情况下发出的,而其他命令则是在版本 1 下发出的。API 版本指标保留 24 小时。如果过去 24 小时内没有使用具体 API 版本从应用程序发出命令,则将从指标中删除
appname
和 API 版本。这也适用于default
API 版本指标。连接至 MongoDB 实例时,通过在连接 URI 中指定
appname
来设置appname
。?appName=ZZZ
将appname
设置为ZZZZ
。访问 Stable API 的驱动程序可以设置默认
appname
。如果未配置
appname
,则根据产品自动填充默认值。例如,对于 URI 中没有appname
的 MongoDB Compass 连接,该指标返回:'MongoDB Compass': [ 'default' ]
。
版本 5.0 中的新增功能。
metrics.operatorCounters
一个文档,其中报告聚合管道操作符和表达式使用情况。
metrics.operatorCounters.expressions
带有数字的文档,指示表达式操作符的运行频率。
要获取特定操作符(例如大于操作符 (
$gt
))的指标,请将该操作符附加到命令中:db.runCommand( { serverStatus: 1 } ).metrics.operatorCounters.expressions.$gt 版本 5.0 中的新增功能。
metrics.operatorCounters.match
带有数字的文档,该数字指示匹配表达式运行的频率。
匹配表达式操作符也会作为聚合管道
$match
的一部分递增。如果$match
阶段使用$expr
操作符,则$expr
的计数器会递增,但组件计数器不会递增。考虑以下查询:
db.matchCount.aggregate( [ { $match: { $expr: { $gt: [ "$_id", 0 ] } } } ] ) 查询运行时,
$expr
的计数器会递增。$gt
的计数器不会递增。
metrics.changeStreams.largeEventsSplit
分割成较小片段且大于 16 MB 的变更流事件的数量。仅当使用
$changeStreamSplitLargeEvent
管道阶段时,才会分割事件。版本 7.0中的新增功能:(在 6.0.9 中也可用)
metrics.changeStreams
报告大于 16 MB 的变更流事件的相关信息的文档。
7.0 版本中的新增功能。
metrics.changeStreams.largeEventsFailed
由于事件大于 16 MB 而导致
BSONObjectTooLarge
异常的变更流事件的数量。要防止出现异常,请参阅$changeStreamSplitLargeEvent
。版本 7.0 新增内容:(也适用于版本 6.0.9 和 5.0.19)
metrics.changeStreams.showExpandedEvents
showExpandedEvents选项设置为
true
的变更流游标的数量。当您执行以下操作时,
showExpandedEvents
的计数器会递增:打开change stream游标。
在change stream游标上运行
explain
命令。
版本 7.1 中的新增内容。
metrics.commands
报告数据库命令使用情况的文档。
metrics.commands
中的字段是数据库命令的名称。对于每个命令,serverStatus
都会报告执行的总次数和执行失败的次数。metrics.commands
包括replSetStepDownWithForce
(即带有force: true
的replSetStepDown
指令)和整个replSetStepDown
。在早期版本中,该命令仅报告整体replSetStepDown
指标。
metrics.commands.<command>.failed
<command>
在此mongod
上失败的次数。
metrics.commands.<create or collMod>.validator
对于
create
和collMod
命令,它是报告传递给命令的非空validator
对象的文档,用于指定集合的验证规则或表达式。
metrics.commands.<create or collMod>.validator.total
将非空
validator
对象作为选项传递给此mongod
上的命令的次数。
metrics.commands.<create or collMod>.validator.failed
由于模式验证错误,使用非空
validator
对象调用此mongod
上的命令失败的次数。
metrics.commands.<create or collMod>.validator.jsonSchema
将带有
$jsonSchema
的validator
对象作为选项传递给此mongod
上的命令的次数。
metrics.commands.<command>.total
在此
mongod
上执行<command>
的次数。
metrics.commands.<command>.rejected
<command>
在mongod
上被拒绝的次数,因为命令或操作关联的查询设置中,reject
字段是true
。要设置
reject
字段,使用setQuerySettings
。8.0版本新增。
metrics.commands.update.pipeline
使用聚合管道更新此
mongod
上的文档的次数。从更新总数中减去该值以获得使用文档事务语法进行的更新次数。pipeline
计数器仅适用于update
和findAndModify
操作。
metrics.commands.findAndModify.pipeline
聚合管道中使用
findAndModify()
来更新此mongod
上的文档的次数。pipeline
计数器仅适用于update
和findAndModify
操作。
metrics.commands.update.arrayFilters
使用 arrayFilter 更新此
mongod
上的文档的次数。arrayFilters
计数器仅适用于update
和findAndModify
操作。
metrics.commands.findAndModify.arrayFilters
将 arrayFilter 与
findAndModify()
一起使用来更新此mongod
上的文档的次数。arrayFilters
计数器仅适用于update
和findAndModify
操作。
metrics.document
一个文档,其中反映文档访问权限和修改模式。将这些值与
opcounters
文档中的数据进行比较,后者跟踪操作总数。
metrics.dotsAndDollarsFields
带有数字的文档,该数字指示使用美元 (
$
) 前缀名称执行插入或更新操作的频率。此值不报告确切的操作次数。当 upsert 操作创建一个新文档时,它将被视为
insert
而不是update
。版本 5.0 中的新增功能。
metrics.getLastError
一个文档,其中报告写关注使用情况。
metrics.getLastError.wtime
一个文档,其中报告
w
参数大于1
时的写关注操作计数。
metrics.getLastError.wtime.totalMillis
mongod
执行特定写关注操作所花费的总时间(以毫秒为单位),这些操作指定写关注(即w
),并等待一个或多个副本集节点确认写操作(即w
值大于1
)。
metrics.getLastError.wtimeouts
由于
wtimeout
阈值导致写关注操作超时的次数。对于默认和非默认写关注规范,该数字都会递增。
metrics.getLastError.default
一个文档,其中报告何时使用默认写关注(即非
clientSupplied
写关注)。默认写关注的可能来源是:implicitDefault
customDefault
getLastErrorDefaults
有关每种可能的写关注来源或
provenance
的信息,请参阅下表:来源说明clientSupplied
应用程序中指定了写关注。customDefault
写入关注源自自定义的默认值。请参阅setDefaultRWConcern
。getLastErrorDefaults
写关注源自副本集的settings.getLastErrorDefaults
字段。implicitDefault
在没有所有其他写入关注规范的情况下,写入关注源自服务器。
metrics.mongos
包含有关
mongos
的指标的文档。
metrics.mongos.cursor
包含
mongos
使用的游标指标的文档。
metrics.mongos.cursor.moreThanOneBatch
自
mongos
启动以来返回多个批处理的游标的总数。其他批处理可使用getMore
命令进行检索。版本 5.0 中的新增功能。
metrics.mongos.cursor.totalOpened
自
mongos
启动以来已打开的游标总数,包括当前打开的游标。与metrics.cursor.open.total
不同,后者仅表示当前打开的游标数量。版本 5.0 中的新增功能。
metrics.network.totalIngressTLSHandshakeTimeMillis
6.3 版本中的新功能。
服务器的传入连接必须等待 TLS 网络握手完成的总时间(以毫秒为单位)。该数字为累积性,表示服务器启动后的总数。
metrics.network.totalTimeForEgressConnectionAcquiredToWireMicros
6.3 版本中的新功能。
操作在获取服务器连接和写入字节以通过网络发送到服务器之间等待的总时间(以微秒为单位)。该数字为累积性,表示服务器启动后的总数。
metrics.network.totalTimeToFirstNonAuthCommandMillis
6.3 版本中的新功能。
从接受传入服务器的连接到收到不属于连接身份验证握手的第一个操作的总时间(以毫秒为单位)。该数字为累积性,表示服务器启动后的总数。
metrics.operation.killedDueToDefaultMaxTimeMSExpired
8.0版本新增。
由于集群级别默认超时而超时的操作总数,
defaultMaxTimeMS
。
metrics.operation.totalTimeWaitingBeforeConnectionTimeoutMillis
6.3 版本中的新功能。
由于服务器连接获取超时错误而导致操作失败前的总等待时间(毫秒)。
metrics.operation.unsendableCompletedResponses
版本 7.1 中的新增内容。
在服务器端完成但由于客户端和服务器之间的连接失败或断开而未向客户端发送响应的操作总数。
metrics.query.lookup
一个文档,提供有关使用基于时隙的查询执行引擎的
$lookup
阶段的详细数据。要了解更多信息,请参阅$lookup
优化。这些指标主要供 MongoDB 内部使用。
6.1 版本新增
metrics.query.multiPlanner
为基于时隙的查询执行引擎和经典查询引擎提供详细的查询规划数据。有关基于时隙的查询执行引擎的更多信息,请参阅:基于时隙的查询执行引擎管道优化。
这些指标主要供 MongoDB 内部使用。
版本 6.0.0和 5.0.9中的新增内容
query.queryFramework.aggregate
一个文档,其中报告在每个查询框架上运行的聚合操作数量。
query.queryFramework.aggregate
中的子字段指示每个框架用于执行聚合操作的次数。
query.queryFramework.find
一个文档,其中报告在每个查询框架上运行的查找操作数量。
query.queryFramework.find
中的子字段指示每个框架用于执行查找操作的次数。
metrics.queryExecutor.scanned
在查询和查询计划评估期间扫描的索引项目总数。该计数器与
explain()
的输出中的totalKeysExamined
相同。
metrics.queryExecutor.scannedObjects
查询和查询计划评估期间扫描的文档总数。该计数器与
explain()
的输出中的totalDocsExamined
相同。
metrics.queryExecutor.collectionScans.nonTailable
执行了集合扫描但未使用可追加游标的查询数量。
metrics.queryExecutor.collectionScans.total
执行集合扫描的查询总数。该总数包括使用和未使用可追加游标的查询。
metrics.repl
一个文档,其中报告与复制进程相关的指标。
metrics.repl
文档将出现在所有mongod
实例上,包括不属于副本集成员的实例。
metrics.repl.apply
一个文档,其中报告复制 oplog 中操作的应用情况。
metrics.repl.apply.batchSize
应用的 oplog 操作总数。
metrics.repl.apply.batchSize
随着批处理边界处的批处理中的操作数量而增加,而不是在每次操作之后递增。有关更详细的信息,请参阅
metrics.repl.apply.ops
。
metrics.repl.apply.batches
metrics.repl.apply.batches
报告副本集的从节点上的 oplog 应用程序进程。有关 oplog 应用程序进程的更多信息,请参阅多线程复制。
metrics.repl.apply.batches.totalMillis
mongod
应用 oplog 中的操作所花费的总时间(以毫秒为单位)。
metrics.repl.apply.ops
应用的 oplog 操作总数。每次操作后,
metrics.repl.apply.ops
都会递增。
metrics.repl.buffer
MongoDB 在批量应用 oplog 条目之前,会对复制同步源缓冲区中的 oplog 操作进行缓冲。
metrics.repl.buffer
提供了一种跟踪 oplog 缓冲区的方法。有关 oplog 应用程序过程的更多信息,请参阅多线程复制。在版本8.0中进行了更改。
从 MongoDB 8.0 开始,从节点现在可以并行更新本地 oplog 并将更改应用于数据库。对于每批 oplog 条目,MongoDB 使用两个缓冲区:
write
缓冲从主节点接收新的 oplog 条目。写入器将这些条目添加到本地 oplog 并将它们发送到应用器。apply
缓冲区从写入器接收新的 oplog 条目。应用程序使用这些条目来更新本地数据库。
这是一项破坏性变更,因为它弃用了较早的
metrics.repl.buffer
状态指标。
metrics.repl.buffer.apply.maxCount
oplog 应用缓冲中的最大操作数。
mongod
使用常量设置该值,该值不可配置。8.0版本新增。
metrics.repl.buffer.apply.maxSizeBytes
应用缓冲的最大大小。
mongod
使用常量设置此大小,该常量不可配置。8.0版本新增。
metrics.repl.buffer.count
自版本 8.0 起已弃用。
从 MongoDB 8.0开始,从节点使用单独缓冲来写入和应用 oplog 条目。有关 oplog 缓冲中的当前操作数,请参阅
apply.count
或write.count
状态指标。
metrics.repl.buffer.maxSizeBytes
自版本 8.0 起已弃用。
从 MongoDB 8.0开始,从节点使用单独缓冲来写入和应用 oplog 条目。有关缓冲区的最大大小,请参阅
apply.maxSizeBytes
或write.maxSizeBytes
状态指标。
metrics.repl.buffer.sizeBytes
自版本 8.0 起已弃用。
从 MongoDB 8.0 开始,从节点使用单独的缓冲区来写入和应用 oplog 条目。有关 oplog 缓冲区的当前大小,请参见
apply.sizeBytes
或write.sizeBytes
状态指标。
metrics.repl.buffer.write.maxSizeBytes
写入缓冲区的最大大小。
mongod
使用常量设置此值,该常量不可配置。8.0版本新增。
metrics.repl.network
metrics.repl.network
报告复制过程的网络使用情况。
metrics.repl.network.bytes
metrics.repl.network.bytes
报告从复制同步源读取的总数据量。
metrics.repl.network.getmores
metrics.repl.network.getmores
报告getmore
操作的信息,这些操作是作为 oplog 复制进程的一部分从 oplog 游标请求其他结果。
metrics.repl.network.getmores.num
metrics.repl.network.getmores.num
报告getmore
操作的总数,这些操作是从复制同步源请求一组附加操作的操作。
metrics.repl.network.getmores.totalMillis
metrics.repl.network.getmores.totalMillis
报告从getmore
操作中收集数据所需的总时间。注意
此数字可能很大,因为,即使
getmore
操作没有初始返回数据,MongoDB 也会等待更多数据。
metrics.repl.network.getmores.numEmptyBatches
从节点从同步源接收的空
oplog
批处理的数量。如果从节点与源完全同步并且满足以下任一条件,则从节点会收到一个空批处理:getmore
在等待更多数据时超时,或者自从最后一次批处理发送到该从节点以来,同步源的大部分提交点已提前。
对于主节点,如果该实例以前是从节点,则该数字报告其作为从节点时收到的空批处理数。否则,对于主节点,此数字为
0
。
metrics.repl.network.oplogGetMoresProcessed.totalMillis
节点处理
getMore
命令所花费的时间(以毫秒为单位)计入metrics.repl.network.oplogGetMoresProcessed.num
。
metrics.repl.network.readersCreated
创建的 oplog 查询进程总数。每当连接发生错误时,包括超时或网络操作,MongoDB 都会创建新的 oplog 查询。此外,每次 MongoDB 选择新的复制源时,
metrics.repl.network.readersCreated
都会递增。
metrics.repl.network.replSetUpdatePosition.num
节点发送到其同步源的
replSetUpdatePosition
命令的数量。replSetUpdatePosition
命令是内部复制命令,用于将复制进度从节点传送到其同步源。注意
处于
STARTUP2
状态的副本集节点不会向其同步源发送replSetUpdatePosition
命令。
metrics.repl.reconfig
一个文档,其中包含节点的
newlyAdded
字段被主节点自动删除的次数。当一个节点首次被添加到副本集时,该节点的newlyAdded
字段将被设置为true
。版本 5.0 中的新增功能。
metrics.repl.reconfig.numAutoReconfigsForRemovalOfNewlyAddedFields
主节点自动删除的
newlyAdded
节点字段的次数。当一个节点首次被添加到副本集时,该节点的newlyAdded
字段将被设置为true
。在主节点收到指示节点状态为SECONDARY
、RECOVERING
或ROLLBACK
的节点心跳响应后,主节点将自动删除该节点的newlyAdded
字段。newlyAdded
字段存储在local.system.replset
集合中。版本 5.0 中的新增功能。
metrics.repl.stateTransition.lastStateTransition
报告的转换情况:
状态变更说明"stepUp"
节点升级成为主节点。"stepDown"
节点降级成为从节点。"rollback"
节点正在主动执行回滚。""
节点未发生任何状态更改。
metrics.repl.stateTransition.totalOperationsKilled
在
mongod
实例状态更改期间停止的操作总数。7.3版本新增:
totalOperationsKilled
取代了userOperationsKilled