连接池概述
本文档将介绍如何使用连接池管理应用程序和 MongoDB 实例之间的连接。
什么是连接池?
定义
连接池是由驱动程序维护的开放式、即用型的数据库连接的缓存。您的应用程序可从池中无缝获取连接、执行操作并将连接返回池中。连接池具备线程安全性。
连接池的优势
连接池有助于降低应用程序延迟以及减少新连接的创建次数。
连接池在启动时创建连接。应用程序不需要手动将连接返回到池中。取而代之的是,连接会自动返回到池中。
有一些连接处于活动状态,也有一些连接处于非活动但可用的状态。如果您的应用程序请求连接并且池中有可用连接,则不需要创建新连接。
创建和使用连接池
使用驱动程序的 对象的实例MongoClient
大多数驱动程序都会提供 MongoClient
类型的对象。
每个应用程序使用一个 MongoClient
实例,除非该应用程序连接到许多单独的集群。每个 MongoClient
实例都管理创建 MongoClient
时指定的 MongoDB 集群或节点的连接池。MongoClient
对象在大多数驱动程序中都具有线程安全性。
注意
将 MongoClient
实例存储在应用程序可以全局访问的位置。
身份验证
要将连接池与 LDAP 结合使用,请参阅 LDAP 连接池行为。
分片集群连接池化
mongos
路由器为集群中的每个节点都设有连接池。分片集群内各个节点的连接可用性会影响延迟。操作必须等待连接成功建立。
连接池配置设置
要配置连接池,通过以下方式设置选项:
通过 MongoDB URI,
构建
MongoClient
实例时以编程方式进行设置,或是在应用程序框架的配置文件中。
设置
设置 | 说明 |
---|---|
连接池中打开的最大连接数。当连接池达到最大连接数时,新连接会一直等待直到达到 默认: | |
池中打开的最小连接数。 默认值: | |
大多数驱动程序默认为永不超时。某些版本的 Java 驱动程序(例如版本 3.7)默认为 默认: | |
TCP 连接判定超时之前可等待的毫秒数。 不要将 设置过短的套接字超时时间可能会导致操作在服务器响应之前因超时而报错。 默认值: | |
连接在池中可保持空闲状态的最大毫秒数,在此时间过后,连接将被删除或关闭。 默认设置:请参阅驱动程序文档。 | |
线程可等待连接变为可用状态的最长时间(以毫秒为单位)。值为 默认值: | |
当设置为:
参数仅适用于分片部署。 默认值: 6.0 版本中的新功能。 | |
每个 TaskExecutor 连接池可向任意给定 默认:2 64 - 1。参阅 参数仅适用于分片部署。 | |
当设置为:
参数仅适用于分片部署。 默认值: 6.0 版本中的新功能。 |