如何应对因实例连接数达到最大限制而引发的连接失败问题 本页介绍了文档数据库服务实例的连接数满导致实例连接失败,如何处理。 问题现象 Python连接文档数据库服务时的错误 : pymongo.errors.ServerSelectionTimeoutError:表示Python的MongoDB驱动(pymongo)无法选择可用的文档数据库服务服务器,连接超时。 Java连接文档数据库服务时的错误 : com.mongodb.MongoTimeoutException:表示Java的MongoDB驱动无法在规定的时间内连接到文档数据库服务实例,连接超时。 可能原因 分片集群(Sharded Cluster): 读写请求过多,超过了分片集群的连接数上限。 部分分片服务器负载过高,无法处理更多的连接请求。 分片键设计不合理,导致部分分片集群负载不均衡。 副本集(Replica Set): 读写请求过多,超过了副本集的连接数上限。 副本集中的主节点(Primary)负载过高,无法处理更多的连接请求。 单节点实例: 读写请求过多,超过了单节点实例的连接数上限。 处理思路 请及时排查业务侧连接是否有效,优化实例连接,释放不必要的连接。 排查“net.maxIncomingConnections”参数的值及实例规格,修改参数值或对数据库进行规格扩容。 通过文档数据库服务控制台,基本信息页查看监控信息、CPU、内存、磁盘、连接数等指标,通过控制台的告警中心设置告警策略,出现告警时可以提前识别风险。 处理方法 优化实例连接,释放不必要的连接。 您可以通过重启实例来临时释放所有的连接。 您可以查询节点当前连接数,以及当前连接来源,分析各个终端和文档数据库服务实例分别建立了多少连接,并作出相应调整。 javascript db.serverStatus().connections { "current" : 7, "available" : 398, "totalCreated" : 818364 }