问题描述

当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连接数据库时,提示以下错误。
    DMS与MongoDB服务器无法建立连接,请检查连接地址的正确性、网络畅通情况、白名单设置后在进行重试。

问题原因

MongoDB实例的连接数已满。

解决方案

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

检查MongoDB的连接数是否被耗尽

  1. 登录MongoDB管理控制台
  2. 在页面左上角,选择实例所在的资源组和地域。
  3. 在左侧导航栏,单击分片集群实例列表
  4. 找到目标实例,单击实例ID。
  5. 在左侧导航栏中,单击监控信息
  6. 监控信息页面,查看实例当前的连接数信息。确认该实例已使用的连接数过多。
    说明:为了更快地获取所需的监控信息,建议您将MongoDB实例的监控粒度设置为秒级,详情请参见设置监控采集粒度
  7. 在左侧导航栏,单击基本信息
  8. 基本信息页面中,找到连接信息区域,单击查看更多连接结合第6步实例已使用的连接数,可判断实例的连接数被耗尽。

释放连接数

您可以通过重启实例来临时释放所有的连接。详细操作请参见重启实例。为避免再次出现该问题,重启实例后建议您参见以下方法进行调整:
说明:重启实例的操作会将实例的节点进行轮转重启,每个节点会有30秒左右的闪断,如果集合的数量较多(超过1万),闪断时间也会随之变长,重启前请做好业务安排并确保应用有重连机制。

适用于

  • 云数据库MongoDB

如果您的问题仍未解决,您可以在阿里云社区免费咨询,或提交工单联系阿里云技术支持。