Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs 菜单
Docs 主页
/ / /
Kotlin Sync 驱动程序
/ /

连接池

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

连接池是Kotlin Sync驾驶员维护的打开数据库连接的缓存。当您的应用程序请求连接到MongoDB时,驾驶员会从池中检索连接,执行操作,然后将连接返回到池中以供重复使用。

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

对于MongoDB拓扑结构中的每个服务器,每个 MongoClient实例都有一个内置连接池。如果不配置 minPoolSize 选项,连接池将按需打开套接字。这些套接字支持应用程序中的并发MongoDB操作。

当您实例化新的 MongoClient 时,客户端会为MongoDB拓扑结构中的每个服务器打开两个套接字,以监控服务器的状态。

示例,连接到三节点副本集的客户端会打开六个监控套接字。如果应用程序使用 maxPoolSize 的默认设置,并且仅查询主节点 (primary node in the replica set)节点,则连接池最多可以有 106 个打开的套接字和 100 个连接。如果应用程序使用 读取偏好(read preference)来查询从节点(secondary node from replica set),则总连接数可为 306

为了效率,请为每个进程创建一个客户端,然后将其重复用于所有操作。避免为每个请求创建新客户端,因为这会增加延迟。

您可以使用连接字符串或 MongoClientSettings对象指定连接池的设置。

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

下表描述了可以在连接字符串中设立的连接池选项:

选项
说明

maxConnecting

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

默认: 2

maxIdleTimeMS

设置连接在被删除和关闭之前可以在池中保持空闲状态的最大毫秒数。

默认: 0

maxPoolSize

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

默认: 100

minPoolSize

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

默认值0

maxLifeTimeMS

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

默认值0

要学习;了解有关这些选项的详情,请参阅 ConnectionString API文档。

要在 MongoClientSettings对象中指定连接池设置,请将 applyToConnectionPoolSettings() 方法链接到 MongoClientSettings 构建器。将 ConnectionPoolSettings.Builder区块作为参数传递给 applyToConnectionPoolSettings() 方法。

下表描述了可在 ConnectionPoolSettings.Builder区块中用于配置连接池的setter 方法:

方法
说明

addConnectionPoolListener()

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

applyConnectionString()

应用 ConnectionString对象中的设置。

applySettings()

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

maintenanceFrequency()

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

maintenanceInitialDelay()

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

maxConnectionIdleTime()

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

maxConnectionLifeTime()

设置池连接在关闭之前可以打开的最长时间。

maxSize()

设置池中可以打开的最大连接数。

默认值100

maxWaitTime()

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

默认值2 分钟

minSize()

设置池中可以打开的最小连接数。

默认值0

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

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

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

val uri = "mongodb://<host>:<port>/?maxPoolSize=50"
val client = MongoClient.create(uri)
val mongoClient = MongoClient.create(
MongoClientSettings.builder()
.applyConnectionString(ConnectionString("mongodb://<host>:<port>/"))
.applyToConnectionPoolSettings { builder ->
builder.maxSize(50)
}
.build()
)

要学习;了解有关使用连接池的更多信息,请参阅MongoDB Server手册中的连接池概述

后退

限制MongoDB Server执行时间

来年

AWS Lambda

在此页面上