文档菜单
文档首页
/
MongoDB 手册
/ / /

调整您的连接池设置

本页内容

  • 计算最大连接数
问题
解决方案
慢速应用程序操作时间未反映在数据库中服务器日志或实时面板。

使用 connectTimeoutMS 确保驱动程序在连接阶段不会无限期等待。

connectTimeoutMS 设置为大于您到集合成员的最大网络延迟值。

例如:如果成员的延迟为10000毫秒,将 connectTimeoutMS 设置为5000(毫秒)将防止驱动程序连接到该成员。

配置错误的防火墙不正确地关闭套接字连接,并且驱动程序无法检测到连接不正确地关闭。

使用 socketTimeoutMS 确保套接字始终关闭。

socketTimeoutMS 设置为驱动程序运行的最慢操作长度的两到三倍。

服务器日志或实时面板显示应用程序花费太多时间创建新连接。

启动时可用连接不足。通过设置 minPoolSize 在池中分配连接。

minPoolSize 设置为您希望在启动时可用的连接数。

MongoClient 实例确保始终存在该数量的连接。

数据库负载较低,任何时候活跃连接的数量都很少。应用程序在任何时候执行的运算量少于预期。
增加 maxPoolSize,或增加您应用程序或您使用的框架中的活动线程数量。
数据库CPU使用率高于预期。服务器日志或实时面板显示比预期更多的连接尝试。
减少 maxPoolSize 或减少您应用程序中的线程数量。这可以降低负载和响应时间。

警告

不要使用 socketTimeoutMS 防止长时间运行的服务器操作。相反,使用 maxTimeMS() 与查询一起,以便服务器可以取消长时间运行的操作。

计算使用情况以找到每个连接运行的请求数量。

考虑四个应用程序服务器连接到包含三个成员的副本集。在这种情况下,每个应用程序服务器为每个副本集成员创建一个连接池。

通过将 maxPoolSize 与成员数量相乘来计算每个应用程序服务器打开的最大连接数。

计算应用程序到三个成员副本集的出站连接

100 (maxPoolSize 默认 100) x 3 (副本集成员) = 300 (应用程序的出站连接)。

计算四个应用程序服务器到副本集的入站连接

100 (maxPoolSize 默认 100) x 4 (应用程序服务器) = 400 (每个mongod的入站连接)。

返回

连接池