当MongoDB实例的连接数被耗尽后,新发起的连接请求将无法被响应,本文介绍如何排查因连接数耗尽导致的数据库连接问题。
故障表现
不同的MongoDB实例规格支持的最大连接数有所不同,详情请参见实例规格概述。
- 部署的应用程序突然无法连接数据库。
- 已正确设置了白名单,通过Mongo Shell连接数据库时,提示如下错误:
2019-07-10T10:30:43.597+0800 E QUERY [js] Error: network error while attempting to run command 'isMaster' on host 'dds-bpxxxxxxxx.mongodb.rds.aliyuncs.com:3717' : connect@src/mongo/shell/mongo.js:328:13 @(connect):1:6 exception: connect failed
- 已正确设置了白名单,通过DMS连接数据库时,提示如下错误:
检查连接数是否被耗尽
解决方法
您可以通过重启实例或指定节点来临时释放所有的连接。为避免再次出现该问题,重启后建议您参考下述方法进行调整:
说明 重启实例的操作会将实例的节点进行轮转重启,每个节点会有30秒左右的闪断,如果集合的数量较多(超过1万),闪断时间也会随之变长,重启前请做好业务安排并确保应用有重连机制。
- 合理地配置连接池,详情请参见如何限制终端的连接数。
- 分析连接的来源,如果经过分析是业务将连接数耗尽,请通过升级实例的规格,详情请参见变更配置方案概览。