Docs 菜单
Docs 主页
/ / /
Java (Sync) 驱动程序
/ /

连接池

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

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

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

对于 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 驱动程序在关闭连接前继续使用池连接的最长时间(毫秒)。值为 0 则表示驱动程序保持池连接打开的时间没有上限。

默认值0

以下代码创建一个最大连接池大小为 50 的客户端。

ConnectionString connectionString = "mongodb://<host>:<port>/?maxPoolSize=50"
MongoClient mongoClient = MongoClients.create(connectionString)

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

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

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

方法
说明

addConnectionPoolListener()

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

applyConnectionString()

使用 ConnectionString 对象中的设置。

applySettings()

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

maintenanceFrequency()

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

maintenanceInitialDelay()

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

maxConnectionIdleTime()

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

maxConnectionLifeTime()

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

maxSize()

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

默认值100

maxWaitTime()

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

默认值2 minutes

minSize()

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

默认值0

注意

maxSizeminSize设置适用于驱动程序连接到的集群中的每台服务器。

例如,假设您将驱动程序连接到一个有三台 mongos 服务器的集群。这意味着每台mongos服务器最多可以有maxSize个连接,至少有minSize个连接。

以下示例链接了 applyToConnectionPoolSettings() 方法,将线程设立为最多等待 10 SECONDS 以获得可用连接,并将连接池的 maxSize 设置为 200:

MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder().applyConnectionString(
new ConnectionString("<your connection string>"))
.applyToConnectionPoolSettings(builder ->
builder.maxSize(50))
.build());

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

后退

限制执行时间

在此页面上

  • Overview
  • 创建连接池
  • 配置连接池
  • 更多信息