首页/数据/NoSQL 速查/db.stats 与 serverStatus 概览
MongoDB99 条

db.stats 与 serverStatus 概览

db.stats() 给库级数据量与索引规模;db.serverStatus() 提供连接数、opcounters、wiredTiger 缓存等运行指标,是监控采集入口。

NoSQL 速查数据更新于 2026-10-13

两个粒度的统计入口

db.stats() 给出库级的数据量、索引规模与对象数,db.serverStatus() 给出实例级运行指标:连接数、各类操作计数器、WiredTiger 缓存使用与内存网络情况。它们是自建监控最省事的采集入口,事故排查时也常用于快速判断"是数据量问题还是资源问题"。

基本信息

库级db.stats() → collections / objects / dataSize / storageSize / indexes
实例级db.serverStatus() → connections / opcounters / wiredTiger / mem
集合级db.<coll>.stats() → count / size / storageSize / nindexes
权限serverStatus 需要 clusterMonitor 一类角色,业务账号只能拿到部分字段
适用版本MongoDB 3.6+ 字段基本一致,新版本会追加指标

示例

示例
// 库级概览:数据量、索引占用与集合数
db.stats()

// 集合级:物理占用与索引个数
printjson(db.orders.stats().storageSize)
printjson(db.orders.stats().nindexes)

// 实例级:只取需要的子文档,避免刷屏
const s = db.serverStatus()
printjson(s.connections)      // current / available / totalCreated
printjson(s.opcounters)       // insert / query / update / delete / command
printjson(s.wiredTiger.cache) // 缓存占用与淘汰情况

// 复制集成员状态与落后时间
rs.status().members.map(m => [m.name, m.stateStr, m.optimeDate])

典型使用场景

  • 容量评估:用 storageSize 的增长趋势判断扩盘时机
  • 连接排查:连接打满时先看 connections.available 还剩多少
  • 操作量定位:opcounters 突增说明流量变化或脚本异常
  • 缓存压力:WiredTiger 缓存淘汰持续增长说明工作集大于内存
  • 复制延迟:结合 rs.status() 的 optimeDate 判断备节点落后程度

关键指标读法

指标含义关注点
connections.current当前连接数接近 available 上限需扩容或收敛连接池
opcounters各类操作累计次数突增代表流量变化或异常脚本
dataSize / storageSize未压缩逻辑数据量与磁盘占用storageSize 通常更小(压缩),差距过小要查压缩配置
indexSize索引占用索引越多内存与写入成本越高
wiredTiger.cache缓存字节数与淘汰情况持续淘汰说明工作集超过内存
serverStatus 输出体量很大,脚本里只取所需子文档;长期监控应交给导出器把指标送进时序库,而不是靠人工反复执行命令。
在集合数量很多的实例上频繁调用 db.stats() 会带来额外开销,巡检频率保持分钟级即可,不需要秒级采集库级统计。

易错点

  • serverStatus 需要 clusterMonitor 一类权限,业务账号执行会报未授权或只返回部分字段
  • storageSize 包含预分配与未回收空间,比实际数据量偏大,不能直接当成"还能腾出多少磁盘"
  • 只看服务端连接数上限而忽略应用侧连接池配置,会出现应用连接耗尽但服务端仍有空余的情况
  • wiredTiger.cache 是过程性指标,单点采样说明不了问题,必须连续观察趋势
  • 把 db.stats() 的 dataSize 当成计费口径:不同压缩配置下磁盘占用差异很大,容量规划要同时看 storageSize

数据来源与参考

  • MongoDB Manual: db.serverStatus()
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌