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

连接池

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

连接池是Kotlin驱动程序维护的打开数据库连接的缓存。当您的应用程序请求连接到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 String 或 MongoClientSettings标签页,查看相应的语法:

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

选项
说明

maxConnecting

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

默认: 2

maxIdleTimeMS

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

默认: 0

maxPoolSize

设置池中可以打开的最大连接数。如果某个操作需要新连接,而连接池的打开连接数已达到最大数量,则该操作将等待新连接打开。

默认: 100

minPoolSize

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

默认值:0

maxLifeTimeMS

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

默认值:0

要学习;了解有关限制新连接等待时间的更多信息,请参阅《限制服务器执行时间》指南。

要学习;了解有关这些选项的更多信息,请参阅 ConnectionString API文档。

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

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

val uri = "mongodb://<host>:<port>/?maxPoolSize=50"val client = MongoClient.create(uri)

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