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

调整连接池设置

在此页面上

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

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

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

例如:如果某一成员的延迟为 10,000 毫秒,将 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 的传入连接)。

后退

连接池

在此页面上