连接池
Overview
在本指南中,您可以学习;了解Java驾驶员如何使用连接池来管理与MongoDB 部署的连接,以及如何在应用程序中配置连接池设置。
连接池是Java驾驶员维护的打开数据库连接的缓存。当您的应用程序请求连接到MongoDB时, Java驾驶员会无缝地从池中获取连接,执行操作,然后将连接返回到池中以供重用。
连接池有助于减少应用程序延迟和Java驾驶员创建新连接的次数。
创建连接池
对于 MongoDB 拓扑结构中的每个服务器,每个 MongoClient
实例都有一个内置连接池。连接池按需打开套接字以支持多线程应用程序中的并发 MongoDB 操作。
maxPoolSize
选项设置每个连接池的最大大小,默认为 100。如果正在使用的服务器连接数达到 maxPoolSize
值,则对该服务器的下一个请求将等待,直到出现可用连接。
每个 MongoClient
实例为MongoDB拓扑结构中的每个服务器再打开两个套接字,用于监控服务器的状态。
配置连接池
您可以使用连接字符串或将 MongoClientSettings
对象传递给 MongoClients.create()
方法来指定连接池的设置。
选择 Connection String 或 MongoClientSettings标签页,查看相应的语法:
以下是可用于配置连接池的连接字符串设置:
设置 | 说明 |
---|---|
| 池可以同时建立的最大连接数。 默认: |
| 连接在池中可保持空闲状态的最大毫秒数,在此时间过后,连接将被删除或关闭。 默认: |
| 池中打开的最大连接数。如果操作需要新连接,而连接池有 默认: |
| 池中打开的最小连接数。 默认值: |
| |
| 指定 Java 驱动程序在关闭连接前继续使用池连接的最长时间(毫秒)。值为 默认值: |
以下代码创建一个最大连接池大小为 50
的客户端。
ConnectionString connectionString = "mongodb://<host>:<port>/?maxPoolSize=50" MongoClient mongoClient = MongoClients.create(connectionString)
有关这些参数的更多信息,请参阅 ConnectionString API文档。
链接 applyToConnectionPoolSettings () 方法,以修改驱动程序管理其连接池的方式。
下表描述了可以链接到设置以修改驱动程序行为的方法:
方法 | 说明 |
---|---|
| 添加监听器,用于监听与连接池相关的事件。 |
| 使用 |
| 使用在 |
| 设置运行维护作业的频率。 |
| 设置运行第一个维护作业之前的等待时间。 |
| 设置连接在关闭之前可以空闲的最长时间。 |
| 设置池式连接在关闭之前可以存活的最长时间。 |
|
默认值: |
| 设置等待可用连接的最长时间。 默认值: |
|
默认值: |
注意
此maxSize
和minSize
设置适用于驱动程序连接到的集群中的每台服务器。
例如,假设您将驱动程序连接到一个有三台 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());
更多信息
有关使用连接池的更多信息,请参阅服务器手册中的连接池文档。