serverStatus详解(上篇)

guwj
发布于 2022-11-24 11:38
浏览
0收藏

定义

==serverStatus


serverStatus命令返回一个文档,该文档提供数据库状态的概述。监控应用程序可以定期运行此命令收集有关该实例的统计信息。


db.runCommand( { serverStatus: 1 } )


值(即1)不会影响命令的操作。同时mongo shell提供了db.serverStatus()封装该命令。


注:


serverStatus的大部分输出也动态显示在mongostat命令中。可参阅 mongostat命令。


行为

默认情况下,serverStatus在其输出中排除repl文档中的一些内容。


要输出默认排除的字段,需要明确定义顶级字段,在命令中设置顶级字段为1。要排除默认包含的字段,在命令中设置顶级字段为0。


例如,在输出中排除repl, metrics, locks信息。


db.runCommand( { serverStatus: 1, repl: 0, metrics: 0, locks: 0 } )


在输出中包含所有repl信息:


db.runCommand( { serverStatus: 1,  repl: 1 } )

输出

注意

输出字段取决于:MongoDB的版本,底层的操作系统平台,存储引擎,和节点类型(包括mongos,mongod或 副本集成员)。


serverStatus在不同MongoDB版本的输出字段,请参阅相应版本的MongoDB手册。


  • 从MongoDB 4.0.6开始,serverStatus包括:
    ·opReadConcernCounters
    ·opWriteConcernCounters(需要reportOpWriteConcernCountersInServerStatus参数设置为true)。
    ·metrics.repl.apply.batchSize
  • 从MongoDB 4.0开始,serverStatus输出中包含 shardingStatistics。
  • 从MongoDB 3.6开始,serverStatus不再输出 rangeDeleter部分。
  • 在MongoDB中3.0开始,serverStatus不再输出 workingSet,indexCounters以及recordStats部分。

 

实例信息:


serverStatus详解(上篇)-鸿蒙开发者社区


host: 系统的主机名。在Unix / Linux系统中,与hostname命令的输出相同。


advisoryHostFQDNs: 3.2版本新功能,全限定域名数组


version:当前MongoDB进程的MongoDB版本。


process:当前的MongoDB进程,可能的值为mongos或mongod


pid: 进程的id号


uptime: 当前MongoDB进程处于活动状态的总秒数,即启动时长。


uptimeMillis: 当前MongoDB进程处于活动状态的毫秒数。


uptimeEstimate: MongoDB内部粗粒度时间保持系统以秒为单位的启动时长


localTime: ISODate表示服务器当前时间,以UTC表示。


serverStatus详解(上篇)-鸿蒙开发者社区


asserts: 报告自MongoDB进程启动以来引发的断言数目的文档。虽然断言错误一般不常见,但如果asserts非零,则应检查日志文件以获取更多信息。在许多情况下,这些错误是微不足道的,但值得研究。


asserts.regular: 自MongoDB进程启动以来引发的常规断言数。检查日志文件以获取有关这些消息的更多信息。


asserts.warning: 在4.0版中更改, 从MongoDB 4.0开始,该字段返回零0。在早期版本中,该字段返回自MongoDB进程启动以来引发的警告数。


asserts.msg: 自MongoDB进程启动以来引发的消息断言数。检查日志文件以获取更多信息。


asserts.user: 自上次MongoDB进程启动以来发生的“用户断言”数。这些是用户可能生成的错误,例如磁盘空间不足或重复密钥。您可以通过修复应用程序或部署问题来阻止这些断言。查看MongoDB日志以获取更多信息。


asserts.rollovers:自上次MongoDB进程启动以来翻转计数器已翻转的次数。在2^30个断言之后,计数器将翻转为零。使用此值可为asserts数据结构中的其他值提供上下文 。

backgroundFlushing

serverStatus详解(上篇)-鸿蒙开发者社区


注意

backgroundFlushing仅对使用MMAPv1存储引擎的实例显示。


backgroundFlushing:报告mongod进程定期写入磁盘的文档。如果关心对写入性能和journaling,请参考这些值。


backgroundFlushing.flushes: 数据库将所有写入刷盘的次数。当数据库运行较长时间时,此值将增加。


backgroundFlushing.total_ms: mongod 进程将数据写入(即刷新)到磁盘所花费的总毫秒数(ms)。因为total_ms是绝对值,需综合考虑flushes和 average_ms值。


backgroundFlushing.average_ms: 以毫秒为单位每次刷盘的平均时间,通过total_ms/flushes计算得出。average_ms更可能代表 flushes增加值。不过,异常数据可能会扭曲此值。使用 backgroundFlushing.last_ms以检查高平均值是否因瞬态历史事件或随机写入分布而发生偏差。


backgroundFlushing.last_ms: 上次刷新操作完成所花费的时间(以毫秒为单位)。使用此值可验证服务器的当前性能是否与backgroundFlushing.average_ms和 backgroundFlushing.total_ms提供的历史数据一致。


backgroundFlushing.last_finished: 上次刷新操作完成的 时间戳,以ISODate格式表示。如果此值超过服务器当前时间几分钟并且考虑到时区差异,则重启数据库可能会导致一些数据丢失。也可以考虑通过常规阻止写入操作来阻止此值的持续操作。

connections

serverStatus详解(上篇)-鸿蒙开发者社区


connections: 报告连接状态的文档。使用这些值来评估服务器的当前负载和容量要求。


connections.current: 从客户端到数据库服务器的连接数。此数值包括当前的shell会话。考虑connections.available为此数据添加更多上下文的值。


该值将包括所有传入连接,包括任何shell连接或来自其他服务器的连接,例如 副本集成员或mongos实例。


connections.available: 可用的未使用连接数。将此值与 connections.current以了解数据库上的连接负载,查阅UNIX ulimit设置文档,获取有关可用连接的系统阈值的更多信息。


connections.totalCreated: 计算创建到服务器的所有连接。此数字包括已关闭的连接。

dur (journaling)

serverStatus详解(上篇)-鸿蒙开发者社区


注意

dur(journaling)信息仅出现在 mongod实例,并且使用MMAPv1存储引擎且启用了journaling。


dur: 报告mongod实例 与日志相关的操作和性能的文档。MongoDB每3秒报告此数据,收集过去3到6秒之间的信息。


dur.commits:在上一个日志组提交间隔期间写入日志的事务数。


dur.journaledMB: 在上一个日志组提交间隔期间写入日志的数据量(单位(MB))。


dur.writeToDataFilesMB: 在上一个日志组提交间隔期间从日志写入数据文件的数据量(MB)。


dur.compression: 写入日志的数据的压缩率:


( journaled_size_of_data / uncompressed_size_of_data )


dur.commitsInWriteLock:  持有写锁时发生的提交计数。写锁的提交数表示MongoDB节点处于高写负载下,并要求进一步诊断。


dur.earlyCommits: MongoDB在计划的日志组提交间隔之前请求提交的次数 。使用此值确保日记组提交间隔部署时间不会太长。


dur.timeMS: mongod 实例在上一个日记组提交间隔的journaling的各个阶段中报告实例性能的文档。


dur.timeMS.dt: MongoDB收集dur.timeMS数据(以毫秒为单位)。使用此字段为其他dur.timeMS字段值提供上下文。


dur.timeMS.prepLogBuffer: 准备写入日志所花费的时间(以毫秒为单位)。值越小则日志性能越好。


dur.timeMS.writeToJournal: 实际写入日志所花费的时间(以毫秒为单位)。文件系统速度和设备接口会影响其性能。


dur.timeMS.writeToDataFiles: 在日志之后写入数据文件所花费的时间(以毫秒为单位)。文件系统速度和设备接口会影响其性能。


dur.timeMS.remapPrivateView: 重新映射copy-on-write内存映射视图所花费的时间(以毫秒为单位)。较小的值表明日志性能越好。


dur.timeMS.commits: 提交所花费的时间(以毫秒为单位)。


dur.timeMS.commitsInWriteLock: 持有写锁时,提交所花费的时间(以毫秒为单位)

extra_info

serverStatus详解(上篇)-鸿蒙开发者社区


extra_info: 提供有关基础系统的其他信息的文档。


extra_info.note: 字符串文本 "fields vary by platform."


extra_info.heap_usage_bytes: 数据库进程使用的堆空间的总大小(以字节为单位)。仅适用于Unix / Linux系统。


extra_info.page_faults: 缺页中断总数。当性能瓶颈或者内存不足或者数据集增大, extra_info.page_faults计数器动态的增加。有限和零星的缺页中断不一定表示问题。


Windows区分“硬”缺页中断包括硬盘I/O,“软”缺页中断仅需要内存页面移动。MongoDB在此统计信息中计算硬缺页中断和软缺页中断。

freeMonitoring

serverStatus详解(上篇)-鸿蒙开发者社区


freeMonitoring:报告免费云监控的文档。


freeMonitoring.state:免费监控的启用状态。值可以是:“enabled”,“disabled”,”pending”如果启用免费监控, 遇到注册错误。


freeMonitoring.retryIntervalSecs: 上传数据的频率(以秒为单位)。


freeMonitoring.lastRunTime: 上次运行指标的日期和时间。


freeMonitoring.registerErrors: 注册错误的数量,遇到非期望的HTTP状态或网络错误时会增加。


freeMonitoring.metricsErrors: 上传指标时遇到的错误数。

globalLock

serverStatus详解(上篇)-鸿蒙开发者社区


globalLock: 报告数据库锁状态的文档。通常,锁文档提供有关锁使用的更详细数据。


globalLock.totalTime: 自数据库上次启动和创建全局锁以来的时间(以微秒为单位)。这大致与总服务器启动时间相同。


globalLock.currentQueue: 锁引起的排队操作数目的文档


globalLock.currentQueue.total: 等锁的操作的总数(即,总和globalLock.currentQueue.readers和 globalLock.currentQueue.writers)。


持续很小的队列,特别是较短的操作,不必关注。综合考虑globalLock.activeClients 读写相关信息。


globalLock.currentQueue.readers: 排队等待读锁的操作数。持续很小的读队列,尤其是较短的操作,不必关注。


globalLock.currentQueue.writers: 排队等待写锁的操作数。持续很小写队列,特别是较短的操作,不必关注。


globalLock.activeClients: 正在执行读写操作的已连接客户端数目文档,综合考虑 globalLock.currentQueue。


globalLock.activeClients.total: 内部客户端连接db总数,包括系统线程以及读写队列。由于包括系统线程,此值将高于activeClients.readers 和activeClients.writers之和。


globalLock.activeClients.readers: 执行读操作的活跃客户端连接数。


globalLock.activeClients.writers: 执行写操作的活跃客户端连接数。


logicalSessionRecordCache


3.6 版本的新功能。


serverStatus详解(上篇)-鸿蒙开发者社区


logicalSessionRecordCache.activeSessionsCount: 自上次刷新周期以来mongod或mongos实例在内存中缓存的所有活跃本地会话的数目 。


参阅:


logicalSessionRecordCache.sessionsCollectionJobCount: 跟踪刷新进程在config.system.sessions集合上运行的次数的数目。


参阅:​​logicalSessionRefreshMinutes​


logicalSessionRecordCache.lastSessionsCollectionJobDurationMillis: 上次刷新的长度(以毫秒为单位)。


logicalSessionRecordCache.lastSessionsCollectionJobTimestamp: 上次刷新的时间。


logicalSessionRecordCache.lastSessionsCollectionJobEntriesRefreshed: 上次刷新期间刷新的会话数。


logicalSessionRecordCache.lastSessionsCollectionJobEntriesEnded:上次刷新期间结束的会话数。


logicalSessionRecordCache.lastSessionsCollectionJobCursorsClosed:上次config.system.sessions集合刷新期间关闭的游标数 。


logicalSessionRecordCache.transactionReaperJobCount


跟踪事务记录清理进程在config.transactions 集合上运行的次数的数目。


logicalSessionRecordCache.lastTransactionReaperJobDurationMillis:上次事务记录清理的长度(以毫秒为单位)。


logicalSessionRecordCache.lastTransactionReaperJobTimestamp:最后一次事务记录清理的时间。


logicalSessionRecordCache.lastTransactionReaperJobEntriesCleanedUp: 


在上次事务记录清理期间删除的config.transactions集合中的条目数。

locks

serverStatus详解(上篇)-鸿蒙开发者社区

locks

在3.0版中更改。

报告每个锁<type>和锁<modes>数据的文档。

锁<types>如下:


serverStatus详解(上篇)-鸿蒙开发者社区


<modes>如下:


serverStatus详解(上篇)-鸿蒙开发者社区


所有值均为NumberLong()类型。


locks.<type>.acquireCount:在特定模式下获取锁的次数。


locks.<type>.acquireWaitCount: 因锁冲突,引起locks.acquireCount锁等待的次数。


locks.<type>.timeAcquiringMicros: 获取锁的等待时间和(以微秒为单位)。


locks.timeAcquiringMicros除以 locks.acquireWaitCount给出特定锁定模式的近似平均等待时间。


locks.<type>.deadlockCount: 获取锁时遇到死锁的次数。

network

serverStatus详解(上篇)-鸿蒙开发者社区


network:报告MongoDB网络使用情况的文档。


network.bytesIn: 数据库接收的网络流量字节数。使用此值可确保发送到mongod进程的网络流量与预期和整个应用程序间流量一致。


network.bytesOut: 数据库发送的网络流量的字节数 。使用此值可确保mongod进程发送的网络流量与预期和整体应用程序间流量一致。


network.numRequests: 服务器已收到的不同请求的总数。使用此值为network.bytesIn和network.bytesOut 值提供上下文, 以确保MongoDB的网络使用率与期望和应用程序使用一致。


opLatencies


仅适用于``mongod``实例


serverStatus详解(上篇)-鸿蒙开发者社区


opLatencies: 包含整个数据库操作延迟的文档。参阅latencyStats文档查看详细说明。只有mongod实例报告 opLatencies。


opLatencies.reads: 读请求的延迟统计信息。


opLatencies.writes: 写操作的延迟统计信息。


opLatencies.commands: 数据库命令的延迟统计信息。


opReadConcernCounters 


4.0.6版中的新功能,仅适用于mongod实例


serverStatus详解(上篇)-鸿蒙开发者社区

opReadConcernCounters

4.0.6版中的新功能。


报告自上次启动以来对mongod实例查询操作指定 的读取关注级别的文档。


serverStatus详解(上篇)-鸿蒙开发者社区


opReadConcernCounters之和等于 opcounters.query。

 

opWriteConcernCounters 

 

4.0.6版中的新功能,仅适用于mongod实例


serverStatus详解(上篇)-鸿蒙开发者社区


serverStatus详解(上篇)-鸿蒙开发者社区


opWriteConcernCounters:报告自上次启动以来特定write concerns 下mongod实例的写入操作的文档。


更具体地说,opWriteConcernCounters 报告指定的w:<value>的写入操作。日志标志选项(j)和write concerns的超时选项(wtimeout)不会影响计数。即使操作超时,计数也会增加。


注意:仅在reportOpWriteConcernCountersInServerStatus参数设置为true(false默认情况下)时可用 。

opWriteConcernCounters.insert

4.0.6版中的新功能。报告在特定的w:<value>下,自上次启动以来对mongod实例执行的插入操作的文档:


注意:仅在reportOpWriteConcernCountersInServerStatus参数设置为true(false默认情况下)时可用 。


serverStatus详解(上篇)-鸿蒙开发者社区


serverStatus详解(上篇)-鸿蒙开发者社区


opWriteConcernCounters.insert总和等于 opcounters.insert。

opWriteConcernCounters.update

4.0.6版中的新功能。报告在指定的w:<value>下,自上次启动以来对实例的更新操作的文档:


注意:仅在reportOpWriteConcernCountersInServerStatus参数设置为true(false默认情况下)时可用 。


serverStatus详解(上篇)-鸿蒙开发者社区


serverStatus详解(上篇)-鸿蒙开发者社区


opWriteConcernCounters.update总和等于opcounters.update。

opWriteConcernCounters.delete

4.0.6版中的新功能。报告指定的w:<value>,自上次启动以来对mongod实例执行的删除操作的文档:


注意:仅在reportOpWriteConcernCountersInServerStatus参数设置为true(false默认情况下)时可用


serverStatus详解(上篇)-鸿蒙开发者社区


serverStatus详解(上篇)-鸿蒙开发者社区


opWriteConcernCounters.delete的总和等于opcounters.delete。

opcounters

serverStatus详解(上篇)-鸿蒙开发者社区

opcounters

自mongod上次启动实例以来,  按数据库操作类型报告的文档 。


这些数字将随着时间的推移而增长,直 到下次重启,随着时间的推移分析这些值以跟踪数据库使用率。


注意:opcounters操作中的数据数据受多文档影响,例如批量插入或多次更新操作,将作为单个操作处理。有关更详细的文档级操作跟踪,请参阅metrics.document 。


此外,这些值反映了接收的操作,即使操作不成功也会增加。


opcounters.insert:自上次启动mongod实例以来收到的插入操作总数 。


opcounters.query:自 上次启动mongod实例以来收到的查询总数。


opcounters.update:自上次启动mongod实例以来收到的更新操作总数 。


opcounters.delete:自上次启动mongod实例以来的删除操作总数。


opcounters.getmore:自上次启动mongod实例以来“getmore”操作的总数。即使查询数目较低,此计数器也可能很高。作为复制进程的一部分,Secondary节点将发送 getMore操作


opcounters.command:自mongod上次启动实例以来向数据库发出的命令总数 。


opcounters.command计数所有的命令 ,除了写命令: insert,update,和delete。

opcountersRepl 

serverStatus详解(上篇)-鸿蒙开发者社区


opcountersRepl:自上次启动mongod实例以来按类型报告数据库复制操作的文档。当前主机是副本集的成员时才会显示这些值。


MongoDB在复制期间序列化操作,因此这些值将与opcounters值不同。更多信息请参阅复制。


这些数字将随着时间的推移而增长,以响应数据库使用,直到下次重启。随着时间的推移分析这些值以跟踪数据库利用率。


opcountersRepl.insert:自上次启动mongod实例以来复制插入操作的总数 。


opcountersRepl.query:自 上次启动mongod实例以来复制查询的总数。


opcountersRepl.update:自上次启动mongod实例以来复制更新操作总数 。


opcountersRepl.delete:自上次启动mongod实例以来复制的删除操作总数 。


opcountersRepl.getmore:自上次启动mongod实例以来“getmore”操作的总数。即使查询数目较低,此计数器也可能很高。作为复制进程的一部分,secondary节点发送getMore操作。


opcountersRepl.command:自上次启动mongod实例以来发送到数据库的复制命令总数。

repl

serverStatus详解(上篇)-鸿蒙开发者社区


repl:报告副本集配置的文档。 repl仅在当前主机是副本集时存在。更多信息请参见复制。


repl.hosts:当前副本集成员的主机名和端口信息(”host:port")的数组。


repl.setName:当前副本集名称的字符串。此值反映--replSet命令行参数或配置文件中replSetName的值。


repl.ismaster:一个布尔值,指示当前节点是否是副本集的primary节点 。


repl.secondary:一个布尔值,指示当前节点是否是副本集的 secondary成员。


repl.primary:3.0版中的新功能。


副本集的当前primary成员的主机名和端口信息("host:port") 。


repl.me:3.0版中的新增功能:副本集当前成员的主机名和端口信息("host:port")。


repl.rbid:3.0版中的新功能。回滚标识符。用于确定此mongod实例是否发生了回滚。


repl.replicationProgress:在3.2版中更改:以前名称serverStatus.repl.slaves。


3.0版中的新功能。


一个数组,副本集的每个成员报告复制进程给这个成员的一个数组文档。通常,这个成员是primary或者使用链式复制的secondary。


要输出repl,必须将repl选项传递给 serverStatus,如下所示:


db.serverStatus({ "repl": 1 })


db.runCommand({ "serverStatus": 1, "repl": 1 })


repl.replicationProgress部分的内容取决于每个成员复制的源。支持内部操作,仅供内部和诊断使用。


repl.replicationProgress[n].rid:ObjectId用作副本集成员的ID。仅限内部使用。


repl.replicationProgress[n].optime:从这个成员报告的,成员应用的oplog最后一个操作信息。


repl.replicationProgress[n].host:主机的名称[hostname]:[port]格式为副本集的成员。


repl.replicationProgress[n].memberID:此成员的副本集的整数标识符。




文章转载自公众号: Mongoing中文社区


分类
标签
已于2022-11-24 11:38:45修改
收藏
回复
举报
回复
    相关推荐