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

连接池

在本指南中,您可以学习;了解Scala驾驶员如何使用连接池来管理与MongoDB 部署的连接,以及如何在应用程序中配置连接池设置。

连接池是由Scala驾驶员维护的打开数据库连接的缓存。您的应用程序从池中检索连接,执行操作并返回连接以供重复使用。

使用连接池可以减少延迟,并最大限度地减少驾驶员创建新连接的次数。

对于MongoDB拓扑结构中的每个服务器,每个 MongoClient实例都有一个内置连接池。连接池按需打开套接字以支持应用程序中的并发MongoDB操作。

maxPoolSize 选项设置每个连接池的最大大小,默认为 100。如果正在使用的服务器连接数达到 maxPoolSize 值,则对该服务器的下一个请求将等待,直到出现可用连接。

每个 MongoClient实例为MongoDB拓扑结构中的每个服务器再打开两个套接字,用于监控服务器的状态。

您可以使用连接字符串或 MongoClientSettings对象配置连接池。

选择 Connection StringMongoClientSettings标签页,查看相应的语法:

下表描述了用于配置连接池的连接字符串选项:

选项
说明

maxConnecting

驾驶员可以同时建立的最大连接数。

默认: 2

maxIdleTimeMS

在驾驶员关闭连接之前,连接在连接池中可以保持空闲状态的最大毫秒数。值为 0 表示没有限制。

默认: 0

maxPoolSize

驾驶员一次可以在单个连接池打开的最大连接数。

默认: 100

minPoolSize

驾驶员在单个连接池维护的最小连接数。此值必须小于 maxPoolSize

默认: 0

waitQueueTimeoutMS (已弃用)

此选项已弃用。请改用timeoutMS 。要学习;了解更多信息,请参阅限制服务器执行时间。

操作等待连接变为可用状态的最大等待时间(以毫秒为单位)。值为 0 表示没有限制。

默认: 120000

maxLifeTimeMS

连接可以保持打开状态的最大毫秒数。值为 0 表示没有限制。

默认: 0

有关更多信息,请参阅 ConnectionString API文档。

applyToConnectionPoolSettings() 方法链接到 MongoClientSettings.Builder 类以配置连接池。下表描述了可以链接使用的 ConnectionPoolSettings.Builder 方法来配置池:

方法
说明

addConnectionPoolListener()

为连接池事件添加侦听器。

applyConnectionString()

应用来自 ConnectionString对象的设置。

applySettings()

应用来自 ConnectionPoolSettings对象的设置。

connectionPoolListenerList()

设置连接池监听器列表。

maintenanceFrequency()

设置管理空闲和过期连接的定期作业的频率。

maintenanceInitialDelay()

设置在连接池运行第一个维护作业之前的等待时间。

maxConnectionIdleTime()

设置池连接的最大空闲时间。值为 0 表示没有限制。

maxConnectionLifeTime()

设置池化连接的最长生命周期。值为 0 表示没有限制。

maxConnecting()

设置池可以同时建立的最大连接数。

默认: 2

maxSize()

设置池中允许的最大连接数。

默认: 100

maxWaitTime()

设置等待可用连接的最长时间。

默认: 2 数分钟

minSize()

设置驾驶员在池中维护的最小连接数。

默认: 0

注意

maxSize()minSize() 设置分别应用部署中的每台服务器,而不是应用于整个池。

要学习;了解更多信息,请参阅 ConnectionPoolSettings.Builder API文档。

以下示例展示了如何创建最大连接数为 50 的连接池。

选择 Connection StringMongoClientSettings标签页,查看相应的语法:

val mongoClient = MongoClient("mongodb://<host>:<port>/?maxPoolSize=50")
val settings = MongoClientSettings.builder()
.applyConnectionString(ConnectionString("<connection string>"))
.applyToConnectionPoolSettings(
(builder: ConnectionPoolSettings.Builder) => builder.maxSize(50))
.build()
val mongoClientWithSettings = MongoClient(settings)

有关使用连接池的更多信息,请参阅服务器手册中的连接池文档。

要学习;了解有关本指南中讨论的类型和方法的更多信息,请参阅以下API文档: