tencent cloud

云数据库 MongoDB

动态与公告
产品动态
公告
新手指引
产品简介
产品概述
产品优势
应用场景
集群架构
产品规格
产品功能
地域和可用区
名词解释
购买指南
计费概述
产品定价
计费公式
欠费说明
备份空间计费
变配计费说明
快速入门
快速创建实例
连接 MongoDB 实例
读写数据库
操作指南
访问管理
管理实例
节点管理
版本升级
网络配置
系统监控
备份与回档
数据库审计
数据安全
SSL 认证
日志管理
数据库管理
多可用区部署
只读灾备
参数配置
回收站
任务管理
诊断优化
数据迁移指引
实践教程
索引优化解决读写性能瓶颈
分片集群 Mongos 负载不均解析及应对方案
分片集群使用注意事项
MongoDB 协议实例读写示例
基于 CVM 连接 MongoDB 进行数据导入导出的方法
3.6版本实例反复创建和删除同名数据库时报错怎么办
无法连接 MongoDB 解决方法
删减分片任务:进度确认与异常排查指南
性能调优
运维开发指南
开发规范
3.2版本分片集群命令支持情况
3.6版本命令支持情况
开发运维
故障处理
慢查询增多
连接数超限
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Backup APIs
Account APIs
Other APIs
Task APIs
Introduction
Data Types
Error Codes
SDK 参考
Shell连接示例
PHP 连接示例
Node.js连接示例
Java 连接示例
Python连接示例
Python 读写示例
Go 连接示例
PHP 重连示例
产品性能
测试环境
测试方法
测试结果
常见问题
费用相关问题
功能特性问题
分片集群问题
实例相关问题
回档备份问题
连接相关问题
数据迁移问题
其他常见问题
相关协议
服务等级协议
Terms of Service
词汇表
联系我们

慢查询类问题排查

PDF
聚焦模式
字号
最后更新时间: 2024-01-12 10:56:09
您在使用 MongoDB 时发现请求延迟明显变长时,可按照如下步骤进行排查:
1. 请检查实例的请求延迟监控指标有无异常。 登录 MongoDB 控制台,单击实例 ID 进入管理页面,在系统监控页面,检查实例的监控数据,时延监控指标主要反馈的是从请求到达接入层直至处理完返回客户端的时间。若请求时延较高,则需检查 mongod 上是否有慢日志。
2. 查看当前 mongod 上是否有慢日志。 登录 MongoDB 控制台,单击实例 ID 进入管理页面,在数据库管理 > 慢日志查询页面查看实例的慢日志,可选择抽象查询。 请关注:command、COLLSCAN、IXSCAN、keysExamined、docsExamined 等关键字,更多的日志说明请参考 MongoDB 官网。 需注意的关键字如下:
command 指出慢日志中记录的操作。
COLLSCAN 代表该查询进行了全表扫描,IXSCAN 代表进行了索引扫描。更多的字段描述请参考 MongoDB 官网
keysExamined 代表索引扫描条目,docsExamined 代表文档扫描条目。keysExamined 和 docsExamined 越大代表没有建索引或者索引的区分度不高。请确认索引的创建字段。
3. 请确认是否在前台建索引导致请求被锁住。 如果业务查询所用索引并无问题,请确认当前是否在业务繁忙时段进行了前台建索引操作。当为一个集合创建索引时默认方式为前台方式(background 选项的值为 false)。该操作将阻塞其他的所有操作,直到前台完成索引创建。但如果采用后台方式建索引,则在创建索引期间,MongoDB 依旧可以正常提供读写操作服务,不过,后台建索引方式是有代价的,即后台方式建索引可能会导致索引创建时间变长。具体创建索引的选项请参考 MongoDB 官网。 可通过 currentOp 命令来查看当前建索引的进度,具体的命令如下:
db.currentOp(
{
$or: [
{ op: "command", "query.createIndexes": { $exists: true } },
{ op: "insert", ns: /\\.system\\.indexes\\b/ }
]
}
)
返回如下图所示,msg 字段代表了当前建索引的进度,locks 字段代表该操作的锁类型,更多锁的说明请参考 MongoDB 官网


4. 检查是否 mongos 负载过高。 时延监控指标主要反馈的是从请求到达接入层直至处理完返回客户端的时间,若已确认 mongod 上没有慢操作,但请求时延较高,可能是 mongos 负载过高导致。造成 mongos 负载高的原因有多种,例如业务瞬间建立大量连接可能会导致 mongos 负载过高,或者,多个分片的数据需要汇总也可能会造成 mongos 负载高。此时可以进行 mongos 重启。重启 mongos 可以在 控制台 实例列表进行。
注意:
重启 mongos 会导致实例所有的连接在重启的一瞬间中断,业务直接进行重连即可,不存在持续影响业务的可能。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈