serverStatus详解

serverStatus

原文链接:https://docs.mongodb.com/manual/reference/command/serverStatus/index.html

 

  • 定义
  • 行为
  • 输出

 

*定义

==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的版本,底层的操作系统平台,存储引擎,和节点类型(包括mongosmongod或 副本集成员)。

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

 

实例信息:

 

"host" : <string>,

"advisoryHostFQDNs" : <array>,

"version" : <string>,

"process" : <"mongod"|"mongos">,

"pid" : <num>,

"uptime" : <num>,

"uptimeMillis" : <num>,

"uptimeEstimate" : <num>,

"localTime" : ISODate(“"),

 

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表示。

 

asserts:

 

"asserts" : {

 "regular" : <num>,

   "warning" : <num>,

   "msg" : <num>,

   "user" : <num>,

"rollovers" : <num>

},

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

 

"backgroundFlushing" : {

   "flushes" : <num>,

   "total_ms" : <num>,

   "average_ms" : <num>,

   "last_ms" : <num>,

   "last_finished" : ISODate("...")

},

注意

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

 

"connections" : {

   "current" : <num>,

   "available" : <num>,

   "totalCreated" : NumberLong(<num>)

},

 

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

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

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

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

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

 

dur (journaling)

 

"dur" : {

   "commits" : <num>,

   "journaledMB" : <num>,

   "writeToDataFilesMB" : <num>,

   "compression" : <num>,

   "commitsInWriteLock" : <num>,

   "earlyCommits" : <num>,

   "timeMs" : {

      "dt" : <num>,

      "prepLogBuffer" : <num>,

      "writeToJournal" : <num>,

      "writeToDataFiles" : <num>,

      "remapPrivateView" : <num>,

      "commits" : <num>,

      "commitsInWriteLock" : <num>

   }

},

 

注意

durjournaling)信息仅出现在 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

 

"extra_info" : {

   "note" : "fields vary by platform.",

   "heap_usage_bytes" : <num>,

   "page_faults" : <num>

},

 

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

"freeMonitoring" : {

   "state" : <string>,

   "retryIntervalSecs" : <NumberLong>,

   "lastRunTime" : <string>,

   "registerErrors" : <NumberLong>,

   "metricsErrors" : <NumberLong>

},

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

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

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

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

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

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

 

globalLock

"globalLock" : {

   "totalTime" : <num>,

   "currentQueue" : {

      "total" : <num>,

      "readers" : <num>,

      "writers" : <num>

   },

   "activeClients" : {

      "total" : <num>,

      "readers" : <num>,

      "writers" : <num>

   }

},

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 版本的新功能。

"logicalSessionRecordCache" : {

   "activeSessionsCount" : <num>,

   "sessionsCollectionJobCount" : <num>,

   "lastSessionsCollectionJobDurationMillis" : <num>,

   "lastSessionsCollectionJobTimestamp" : <Date>,

   "lastSessionsCollectionJobEntriesRefreshed" : <num>,

   "lastSessionsCollectionJobEntriesEnded" : <num>,

   "lastSessionsCollectionJobCursorsClosed" : <num>,

   "transactionReaperJobCount" : <num>,

   "lastTransactionReaperJobDurationMillis" : <num>,

   "lastTransactionReaperJobTimestamp" : <Date>,

   "lastTransactionReaperJobEntriesCleanedUp" : <num>

},

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

参阅:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值