对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

调整连接池设置

问题
解决方案

应用程序端操作时间缓慢,未反映在数据库服务器日志或实时面板中。

使用 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 的传入连接)。

给本页内容打分

在此页面上