Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

调整连接池设置

在此页面上

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

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

connectTimeoutMS 设置为大于副本集节点的最长网络延迟的值。

例如:如果某一成员的延迟为 10,000 毫秒,将 connectTimeoutMS 设为 5000(毫秒)则会阻止驱动程序连接到该成员。

一个配置错误的防火墙错误地关闭了一个套接字连接,且驱动程序无法检测到此连接已被不当关闭。

使用 socketTimeoutMS 可确保套接字始终处于关闭状态。

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

服务器日志或实时面板显示应用程序创建新连接的耗时过长。

启动时没有足够的可用连接。通过设置 minPoolSize 在池中分配连接。

minPoolSize 设为您想在启动时使用的连接数。

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

数据库的负载较低,且在任何时段活跃连接的数量都很少。应用程序在任一时间段执行的操作次数均少于预期。
增大 maxPoolSize,或增加应用程序或所用框架中的活动线程数。
数据库 CPU 使用率高于预期。服务器日志或实时面板显示的连接尝试次数多于预期。
减小 maxPoolSize 或减少应用程序中的线程数。这可以减少负载和响应时间。

警告

请勿使用 socketTimeoutMS 来防止长时间运行服务器的操作。请在查询中使用 maxTimeMS(),这样服务器就可以取消长时间运行的操作。

计算使用量以查找每个连接运行的操作数。

假设有一个应用程序服务器连接到有三个节点的副本集。在这种情况下,该应用程序服务器会为每个副本集节点创建一个连接池。您还需要考虑每个客户端在每个节点上创建的用于监控的连接。

应用程序服务器打开的最大连接数基于 maxPoolSize、节点数量以及每个节点的监控和 RTT 连接。

例如,您可以使用以下公式计算从应用程序到有三个节点的副本集的传出连接数:

(
**100** {:urioption:`maxPoolSize`}
+ **1** monitoring connection
+ **1** RTT connection
)
* 3 replica set members
= **306** outgoing connections from the application.

后退

连接池

在此页面上