前面各阶段都零散提到了监控指标——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」。后续会按运维和架构选型这条线更新。

