使用mongostat监控操作频率和内存、锁竞争情况,结合mongotop分析集合级读写耗时,通过数据库分析器记录慢查询,再辅以系统资源监控和db.serverStatus()等命令,全面评估MongoDB性能。

查看 MongoDB 的性能,关键在于结合内置工具和系统指标来分析数据库的运行状态。重点观察查询效率、资源使用情况以及锁竞争等核心维度。
使用 mongostat 实时监控数据库活动
mongostat 是 MongoDB 自带的命令行工具,能实时显示数据库的操作统计信息,类似 Linux 的 vmstat。
常用操作:- 直接运行
mongostat查看每秒的 insert、query、update、delete 数量 - 关注 faults 字段,高值可能表示内存不足导致频繁读磁盘
- 观察 locked %,长时间高占比说明写操作阻塞严重
- 添加参数如
--host、--port连接远程实例
使用 mongotop 分析集合级别的读写耗时
mongotop 显示每个集合的读写时间,帮助定位慢操作集中在哪些集合。
- 运行
mongotop查看最近几秒各集合的读写毫秒数 - 持续监控可加间隔时间,如
mongotop 5每5秒刷新一次 - 某集合长期占据高时间,需检查其查询是否缺少索引或数据量过大
启用数据库分析器(Database Profiler)记录慢查询
MongoDB 的 profiler 可记录超过指定阈值的查询操作,用于事后分析。
配置方法:- 设置级别:0(关闭)、1(记录慢查询)、2(记录所有操作)
- 通过命令
db.setProfilingLevel(1, { slowms: 100 })开启,记录超过100ms的操作 - 查询日志:
db.system.profile.find().pretty()查看具体内容 - 重点关注 ns(集合名)、millis(耗时)、planSummary(执行计划)
查看服务器系统资源与数据库状态
数据库性能也受底层系统影响,需结合操作系统指标综合判断。
推荐做法:- 使用
top或htop观察 mongod 进程的 CPU 和内存占用 - 用
iostat检查磁盘 I/O 是否存在瓶颈 - 运行
db.serverStatus()获取连接数、内存、断言等内部状态 - 执行
db.stats()或db.collection.stats()查看存储使用情况











