- 文档首页
文档数据库 MongoDB 版
最佳实践
MongoDB CPU 使用率异常排查手册
最佳实践
MongoDB CPU 使用率异常排查手册
MongoDB CPU 使用率异常排查手册
在使用文档数据库 MongoDB 版的过程中,若存在查询语句不够优化(如未设置合理索引)、请求并发量大、计算任务过重等情况时,可能会使数实例 CPU 使用率变高,从而导致数据读写变慢、超时增加等问题,甚至严重影响业务的正常运行。本文从查询语句、慢日志、执行计划等方面,介绍如何排查并定位 MongoDB 实例 CPU 使用率异常的问题。
查看正在运行的语句
您可以参考如下步骤查看数据库中正在运行的语句:
- 在目标实例中执行 db.currentOp(),查看数据库中正在运行的语句。
"client" : "192.168.***.***:****",
"appName" : "MongoDB Shell",
"currentOpTime" : "2023-01-28T16:45:51.243+0800",
"secs_running" : NumberLong(0),
"microsecs_running" : NumberLong(137),
"ns" : "admin.$cmd.aggregate",
"waitingForLock" : false,
说明
您可以查看并分析返回结果中是否存在耗时很长的请求。例如,您平时业务的 CPU 使用率正常,但执行了一些需要全表扫描的操作后导致 CPU 使用率升高,业务响应缓慢,此时就需要重点关注执行耗时非常长的请求。关于返回结果中各字段的更多信息,请参见 currentOp。 查询慢日志
如果您的实例 CPU 使用率异常升高,但执行了 db.currentOp() 命令后,并没有在输出结果中发现耗时异常的请求,那么您可以通过分析慢请求来帮助进一步排查和定位问题。
默认情况下,文档数据库 MongoDB 版会将执行时长超过 100 毫秒的请求记录到慢日志中。您可以参考如下操作步骤来分析慢日志,帮助找到 CPU 使用率异常升高的原因。
- 通过 MongoDB 控制台查询慢日志。具体操作步骤,请参见查询慢日志。
- 分析慢日志,查找引起 MongoDB 实例的 CPU 使用率异常升高的原因。
- 下表列举了慢日志中的部分关键字以及导致慢日志的原因,并提供了一些处理建议供您参考。
分析执行计划
MongoDB 提供了 explain() 命令来查看指定查询的查询计划统计信息,例如所用的索引、查询语句能否被索引覆盖、所扫描的索引项数量、所读取的文档数量、所返回的文档数量、执行查询所需的时间等信息。
您可以通过查询计划中的上述信息帮助建立合适的索引,来优化查询从而减少 CPU 资源消耗。关于 explain() 返回结果的更多信息,请参见 Explain results。 使用与业务负载相匹配的实例
根据数据库正在运行的语句、慢请求以及执行计划的分析结果,对数据库请求使用了合理索引后, 如果 CPU 使用率异常的问题仍然存在,那么您还需要评估 MongoDB 实例的当前配置是否能够满足业务需求。
您可以通过查看监控数据分析实例资源的使用状态,并对 MongoDB 数据库进行性能测试,帮助了解当前实例配置是否满足您的业务所需要的设备性能和服务能力。如果需要升级 MongoDB 实例的配置,请参见变更实例配置。
最近更新时间:2026.01.29 22:05:53