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

连接池

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

连接池是由Java Reactive Streams驾驶员维护的打开数据库连接的缓存。当您的应用程序请求连接到MongoDB时, Java Reactive Streams驾驶员会无缝地从池中获取连接,执行操作并将连接返回到池中以供重用。

连接池有助于减少应用程序延迟和Java Reactive Streams驾驶员创建新连接的次数。

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

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

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

您可以使用连接字符串或将 MongoClientSettings对象传递给 MongoClients.create() 方法来指定连接池的设置。

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

以下是可用于配置连接池的连接字符串设置:

设置
说明

maxConnecting

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

默认: 2

maxIdleTimeMS

连接在被删除和关闭之前可以在池中保持空闲状态的最大毫秒数。将此值设置为高于应用程序的预期空闲时间,但低于防火墙或代理连接超时,以防止意外断开连接。

默认: 0

maxPoolSize

池中打开的最大连接数。如果操作需要新连接,而连接池有 maxPoolSize 个打开的连接,则新操作将等待新连接打开。要限制此等待时间,请使用单个超时设置。要学习;了解更多信息,请参阅限制服务器执行时间指南。

默认: 100

minPoolSize

池中打开的最小连接数。minPoolSize 的值必须小于 maxPoolSize 的值。

默认值0

waitQueueTimeoutMS (已弃用)

此选项已弃用。您可以通过设置客户端级别的超时来配置此超时。

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

默认120000(120 秒)

maxLifeTimeMS

指定Java Reactive Streams驾驶员在关闭连接之前继续使用池化连接的最长时间(以毫秒为单位)。值为 0 表示驾驶员保持池化连接打开的时间没有上限。

默认值0

有关这些参数的更多信息,请参阅 ConnectionString API文档。

链接 applyToConnectionPoolSettings () 方法,以修改驱动程序管理其连接池的方式。

下表描述了可以链接到设置以修改驱动程序行为的方法:

方法
说明

addConnectionPoolListener()

添加监听器,用于监听与连接池相关的事件。

applyConnectionString()

使用 ConnectionString 对象中的设置。

applySettings()

使用在 ConnectionPoolSettings 对象中指定的连接池设置。

connectionPoolListenerList()

设置连接池侦听器列表。

maintenanceFrequency()

设置运行维护作业的频率。

maintenanceInitialDelay()

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

maxConnectionIdleTime()

设置连接在关闭之前可以空闲的最长时间。

maxConnectionLifeTime()

设置池式连接在关闭之前可以存活的最长时间。

maxConnecting()

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

maxSize()

设置与连接池关联的最大连接数。

默认值100

maxWaitTime()

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

默认值2 minutes

minSize()

设置与连接池关联的最小连接数。

默认值0

要学习;了解有关这些方法的更多信息,请参阅 ConnectionPoolSettings.Builder API文档。

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

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

ConnectionString connectionString = new ConnectionString("mongodb://<host>:<port>/?maxPoolSize=50");
try (MongoClient mongoClient = MongoClients.create(connectionString)) {
}
try (MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder().applyConnectionString(
new ConnectionString("<your connection string>"))
.applyToConnectionPoolSettings(builder ->
builder.maxSize(50))
.build())) {

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