调整您的连接池设置
本页内容
问题 | 解决方案 |
---|---|
慢速应用程序操作时间未反映在数据库中服务器日志或实时面板。 | 使用 将 例如:如果成员的延迟为10000毫秒,将 |
配置错误的防火墙不正确地关闭套接字连接,并且驱动程序无法检测到连接不正确地关闭。 | 使用 将 |
服务器日志或实时面板显示应用程序花费太多时间创建新连接。 | |
数据库负载较低,任何时候活跃连接的数量都很少。应用程序在任何时候执行的运算量少于预期。 | 增加 maxPoolSize,或增加您应用程序或您使用的框架中的活动线程数量。 |
数据库CPU使用率高于预期。服务器日志或实时面板显示比预期更多的连接尝试。 | 减少 maxPoolSize 或减少您应用程序中的线程数量。这可以降低负载和响应时间。 |
警告
不要使用 socketTimeoutMS
防止长时间运行的服务器操作。相反,使用 maxTimeMS()
与查询一起,以便服务器可以取消长时间运行的操作。
计算最大连接数
计算使用情况以找到每个连接运行的请求数量。
考虑四个应用程序服务器连接到包含三个成员的副本集。在这种情况下,每个应用程序服务器为每个副本集成员创建一个连接池。
通过将 maxPoolSize
与成员数量相乘来计算每个应用程序服务器打开的最大连接数。
计算应用程序到三个成员副本集的出站连接
100 (maxPoolSize
默认 100
) x 3 (副本集成员) = 300 (应用程序的出站连接)。
计算四个应用程序服务器到副本集的入站连接
100 (maxPoolSize
默认 100
) x 4 (应用程序服务器) = 400 (每个mongod的入站连接)。