调整连接池设置
在此页面上
问题 | 解决方案 |
---|---|
应用程序端操作速度缓慢,未反映在数据库服务器日志或实时面板中。 | 使用 将 例如:如果某一成员的延迟为 10,000 毫秒,将 |
一个配置错误的防火墙错误地关闭了一个套接字连接,且驱动程序无法检测到此连接已被不当关闭。 | 使用 将 |
服务器日志或实时面板显示应用程序创建新连接的耗时过长。 | |
数据库的负载较低,且在任何时段活跃连接的数量都很少。应用程序在任一时间段执行的操作次数均少于预期。 | 增大 maxPoolSize,或增加应用程序或所用框架中的活动线程数。 |
数据库 CPU 使用率高于预期。服务器日志或实时面板显示的连接尝试次数多于预期。 | 减小 maxPoolSize 或减少应用程序中的线程数。这可以减少负载和响应时间。 |
警告
请勿使用 socketTimeoutMS
来防止长时间运行服务器的操作。请在查询中使用 maxTimeMS()
,这样服务器就可以取消长时间运行的操作。
计算最大连接数
计算使用量以查找每个连接运行的操作数。
考虑四台应用程序服务器连接到具有三个成员的副本集。 在此场景中,四台应用程序服务器均会为每个副本集节点创建一个连接池。
将maxPoolSize
乘以节点数,计算出每个应用程序服务器打开的最大连接数。
计算从应用程序到三成员副本集的传出连接:
100 ( maxPoolSize
默认100
) x 3 (副本集成员)= 300 (应用程序的传出连接数)。
计算从四个应用程序服务器到副本集的传入连接:
100 ( maxPoolSize
默认100
) x 4 (应用程序服务器)= 400 (每个 mongod 的传入连接)。