对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs 菜单

连接池

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

连接池是 Scala 驱动程序维护的开放数据库连接的缓存。您的应用程序从连接池中检索连接、执行操作并返回连接以供重用。

使用连接池可以减少延迟并最大程度地减少驱动程序创建新连接的次数。

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

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

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

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

选择 Connection String 或 MongoClientSettings标签页,查看相应的语法:

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

选项
说明

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 String 或 MongoClientSettings标签页,查看相应的语法:

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 文档: