当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连接数据库时,提示如下错误:
检查连接数是否被耗尽
访问MongoDB副本集实例列表或MongoDB分片集群实例列表,在上方选择地域,然后单击目标实例ID。
在目标实例页面的左侧导航栏,单击监控信息。
在监控信息页面,查看实例当前的连接数信息。
说明实例为分片集群实例时,您需要在页面右上角选择业务当前使用的Mongos节点。
不同规格的最大连接数,请参见实例规格表。
解决方法
您可以通过重启实例或节点来临时释放所有的连接。为避免再次出现该问题,重启后建议您参考下述方法进行调整:
说明
重启实例的操作会将实例的节点进行轮转重启,每个节点会有30秒左右的闪断,如果集合的数量较多(超过1万),闪断时间也会随之变长,重启前请做好业务安排并确保应用有重连机制。
合理地配置连接池,详情请参见如何限制终端的连接数。