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
词汇表
联系我们
文档云数据库 MongoDB实践教程性能调优连接使用率偏高异常分析及解决方法

连接使用率偏高异常分析及解决方法

PDF
聚焦模式
字号
最后更新时间: 2024-01-12 10:47:04

场景描述

MongoDB 的服务模型是每个网络连接由一个单独的线程(one-thread-per-connection)来处理,当网络连接数太多时,过多的线程会导致上下文切换开销变大,同时内存开销也会上涨。每次请求都建立连接和鉴权会极大的影响性能。因此,限制实例的连接数,使用完毕规范化及时释放连接,是保障数据库稳定的必要条件。
登录 MongoDB控制台,在系统监控页面,查看实例监控指标连接百分比的趋势变化图。连接百分比指当前集群的连接数量与最大连接数的比例。若达到最大连接数,将会导致连接响应变慢,甚至连接失败的现象。因此,当连接使用率超过85%,请及时进行排查处理。

排查与解决

序号
可能原因
排查方式
解决方法
1
若使用连接池,可能因连接参数配置不合理而导致大量连接资源被占用。
请您自行排查客户端连接池配置参数是否适合业务场景。
连接池使用建议 进行连接池参数配置。
2
业务侧存在较多无实际业务请求的连接。
请借助数据库智能管家(TencentDB for DBbrain,DBbrain)的诊断优化功能,在实时会话页面,排查业务侧所有连接的客户端信息,是否为业务实际真实所需要的连接。
对于不需要的连接,可在数据库智能管家 (TencentDB for DBbrain,DBbrain)的 诊断优化中,在实时会话页面,直接进行 Kill 操作,进行清理。具体操作,请参见 诊断优化
3
存在大量慢查询,连接一直占用未释放。
1. 请借助数据库智能管家 (TencentDB for DBbrain,DBbrain)的诊断优化功能,在慢 SQL 分析页面,查询数据库当前的所有慢日志的记录和执行信息统计数据及视图。具体信息,请参见 诊断优化
2. 请登录 MongoDB 控制台 ,单击实例 ID,进入实例详情页面,选择数据库管理页签,单击慢日志查询,通过抽象排查,排查具体的慢查询信息。具体查询方法,请参见 慢日志管理
针对慢查询,请进行索引优化。
可借助数据库智能管家(TencentDB for DBbrain,DBbrain)索引推荐 ,选择最优的索引。
请参见最佳实践 索引优化解决读写性能瓶颈,提升数据库性能。
4
连接泄露,存在未释放的链接。
重启 mongos 实例, 导致实例所有的连接在重启的一瞬间中断,业务直接进行重连即可,不存在持续影响业务的可能。若重启后业务连接数迅速增加又导致连接使用率100%,则说明业务确实存在大量有效连接,不属于连接泄漏的场景。具体操作,请参见 重启实例
直接在控制台提升连接,临时解决业务突发的状况,具体操作,请参见 连接数管理
调整实例配置规格,副本集实例,提升Mongod 的 CPU 与内存配置,可同步提升实例的最大连接数量。具体信息,请参见 变更 Mongod 节点配置规格。分片集群,请提升 Mongos 的节点规格,或增加分片数量。具体操作,请参见 变更 Mongos 节点配置规格调整分片数量
5
业务量突增,当前实例配额不足
请参见序号2的排查方法。

连接池使用建议

以 GO 语言为例,说明客户端通过连接池连接数据库时需配置的参数。具体信息,请参见下表。其他语言类型,请找到对应的连接池参数进行配置。不同语言类型的更多参数信息,请参见 MongoDB 官网
参数
单位
参数含义
配置建议
maxPoolSize
数量
配置连接池每个客户端所能申请的最大连接数量。
该参数与客户端数量的乘积务必小于实例的最大连接数,避免连接数量过多而导致无法连接。
minPoolSize
数量
配置连接池每个客户端所能申请的最小连接数量
该参数与客户端数量的乘积小于实例的最大连接数,避免业务突发需要新建太多连接而后端实例资源消耗供应不足。
socketTimeoutMS
毫秒
配置发送和接受 sockets 等待响应的超时时间。默认为0,指不超时。
建议根据业务实际场景设置,避免当 MongoDB 服务端异常故障引起主备切换之后,客户端一直等不到服务端响应的消息包,而导致此无效连接资源一直被占用。
maxIdleTimeMS 
毫秒
配置一个空闲连接在被删除或者关闭之前存在的最大时间。
建议业务调整为1小时内,避免空闲连接一直占用连接资源。
heartbeatFrequencyMS
毫秒
配置客户端给服务端发送心跳的频率。用于客户端定期检查与后端数据库连接的存活情况。
建议配置10s内,便于第一时间识别服务端的运行状况,避免产生无效连接。


帮助和支持

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

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

文档反馈