文档首页/ 文档数据库服务 DDS/ 常见问题/ 数据库连接/ 实例的连接数满导致实例连接失败,如何处理?
更新时间:2024-04-29 GMT+08:00

实例的连接数满导致实例连接失败,如何处理?

数据库连接数表示应用程序可以同时连接数据库的数量,与您应用程序或者网站能够支持的最大用户数没有关系。

  • 对于集群实例,一般指客户端同dds mongos之间的连接数。
  • 对于副本集实例,一般指客户端同Primary节点和Secondary节点之间的连接数。
  • 对于单节点实例,一般指客户端同单节点之间的连接数。

当DDS实例的连接数已满时,新发起的连接请求将无法被响应,从而导致实例连接失败。

问题现象

以下为常见的几种报错情况:
  • 使用Mongo Shell连接实例时,出现如下提示,表示当前连接池的连接数已满。
    图1 提示信息
  • 使用Python连接实例时,出现以下提示,表示当前连接池的连接数已满。

    pymongo.errors.ServerSelectionTimeoutError: connection closed, connection closed

处理思路

  1. 请及时排查业务侧连接是否有效,优化实例连接,释放不必要的连接。
  2. 排查“net.maxIncomingConnections”参数的值及实例规格,修改参数值或对数据库进行规格扩容。
  3. 云监控服务目前可以监控数据库CPU、内存、磁盘、连接数等指标,并且设置告警策略,出现告警时可以提前识别风险。具体请参考《云监控服务用户指南》。

处理方法

  1. 优化实例连接,释放不必要的连接。
    1. 您可以通过重启实例来临时释放所有的连接。具体请参见重启实例或节点
    2. 您可以查询节点当前连接数,以及当前连接来源,分析各个终端和DDS实例分别建立了多少连接,并作出相应调整,具体请参见如何查询及限制连接数
  2. 修改参数值或对数据库进行规格扩容。
    实例的最大连接数可通过修改参数“net.maxIncomingConnections”的值进行调整。如何修改参数值请参见编辑参数模板
    • 如果参数值是“default”,表示最大连接数为缺省值,并且与实例的规格相关,具体请参见数据库实例规格
    • 如果调整连接数过大,可能导致服务崩溃,这时只能通过变更实例规格增加承载的连接数的数量,具体请参见变更实例规格

    如果实例参数模板为默认参数模板,由于默认参数模板中不允许修改参数值,您可以创建一个参数模板,并修改对应参数值,修改后将新参数模板关联到该实例。

  3. 检查是否有慢查询,建议添加索引进行优化。