前面各阶段都零散提到了监控指标——Cache 指标、复制延迟、慢查询。这一篇把它们系统化,讲清楚 MongoDB 监控的四类指标维度,以及性能调优的正确优先级。监控不是「看一两个数字」,而是建立分层的观测能力,让你在任何性能问题面前都能快速定位。

先把机制边界说清楚

MongoDB 的性能问题分散在四个维度,每个维度对应一类监控指标:

  • 负载(opcounters):每秒的增删改查数量,看系统在做什么。
  • 连接与队列:连接数、活跃线程、排队情况,看入口容量。
  • WiredTiger Cache:命中率、读盘量、淘汰,看内存健康。
  • 复制:复制延迟、oplog 窗口,看高可用健康度。

这四类指标对应不同的性能瓶颈,监控要覆盖全部四类,不能只盯一个。只看 opcounters 会漏掉内存问题,只看 Cache 会漏掉连接问题。

四类监控指标

监控与调优:四类指标

① opcounters(操作计数)。每秒的 query/insert/update/delete 数。它告诉你系统的负载类型——是读密集还是写密集,负载是平稳还是突增。工具是 mongostat,每秒刷新一次概览。负载突增往往是问题的起点,结合时间点能定位是哪个业务行为导致的。

② 连接与队列connections.current(当前连接数)、active readers/writers(活跃读写线程)、queued readers/writers(排队等待的线程)。queued 高说明请求在 mongod 内部排队,是瓶颈信号——要么是某个慢操作占资源,要么是负载超过处理能力。连接数持续涨要排查连接泄漏。

③ WiredTiger Cache。这是内存健康的核心(第 14 篇展开过)。bytes read into cache(从磁盘读入量)高 = 命中率低 = 工作集超内存。pages evicted by application thread 高 = 应用线程被拉来淘汰 = 查询被拖累。这两个是容量问题的红灯。

④ 复制replicationLag(Secondary 复制延迟)看 Secondary 是否跟得上。oplog 窗口大小看能容忍多久离线。复制延迟大影响读 Secondary 的一致性和 failover 数据安全。

监控工具

mongostat:实时概览工具,每秒刷新,显示 opcounters、连接、队列、Cache 命中等核心指标。快速看集群健康度的第一工具。

mongotop:集合级耗时分析,显示每个集合的读写耗时。定位「哪个集合在吃资源」。

FTDC(Full-Time Diagnostic Data Capture):MongoDB 持续采集的全量诊断数据,存在 diagnostic.data 目录。它记录了服务器所有指标的高频采样,出问题时可以回溯分析。MongoDB 工程师支持排查问题时,FTDC 是关键数据源。

serverStatus / rs.status:通过命令获取的详细状态,用于脚本化监控和告警。

生产环境通常把 serverStatus 接入监控系统(Prometheus + Grafana 等),设置告警阈值(如复制延迟 > 10s、Cache 读盘飙升、queued 高)。

调优的优先级

发现性能问题后,调优要按「从低成本到高成本」的顺序:

① 先查索引和查询(explain)。80% 的性能问题在这一层——索引缺失、查询没走索引、扫描量过大。这一层优化成本最低(加索引、调查询),收益最大。阶段二讲的所有方法都用在这里。

② 再看 Cache(工作集是否超内存)。如果索引没问题但还是慢,看是不是工作集超过了内存(bytes read into cache 高)。这是容量问题,解法是加内存、冷热分离或分片。成本中等。

③ 然后看连接和并发。连接池配置、排队情况。如果 queued 高,排查是不是慢操作占资源、连接池太小、并发太高。入口配置问题。

④ 最后看硬件。CPU、IO、磁盘是否到瓶颈。硬件升级(换更快的 CPU、SSD、加内存)是最后手段,成本最高。

这个顺序很重要:先低成本优化(索引),再高成本(加机器)。跳过索引优化直接加内存,往往是浪费——根因是查询没走索引,加多少内存都不划算。

判断框架

  • 监控覆盖四类:opcounters、连接、Cache、复制,缺一类都有盲区。
  • mongostat 看概览,mongotop 看集合,FTDC 看历史,serverStatus 接告警。
  • 调优顺序:索引查询 → Cache/内存 → 连接并发 → 硬件。
  • 80% 问题在索引层,先 explain 再说。
  • queued 高、读盘高、复制延迟大是三大红灯。
  • 硬件升级是最后手段,别用加机器掩盖设计问题。

下一篇讲安全治理。


关于十三Tech

我是十三,All in AI Agent 方向的架构师,专注 AI 工程实践。

我相信 AI 是程序员的最佳搭档,也希望帮助每一位开发者更好地驾驭 AI。

如果你想继续跟完这套「图解 MongoDB」,欢迎关注公众号 「十三Tech」。后续会按运维和架构选型这条线更新。

十三Tech公众号二维码