Docs 菜单
Docs 主页
/
MongoDB Manual
/ /

连接池概述

在此页面上

  • 什么是连接池?
  • 创建和使用连接池
  • 分片集群连接池化
  • 连接池配置设置

本文档将介绍如何使用连接池管理应用程序和 MongoDB 实例之间的连接。

连接池是由驱动程序维护的打开且随时可用的数据库连接的缓存。您的应用程序可以无缝地从池中获取连接、执行操作以及将连接返回到池中。连接池是线程安全的。

连接池有助于降低应用程序延迟以及减少新连接的创建次数。

连接池在启动时创建连接。应用程序不需要手动将连接返回到池中。取而代之的是,连接会自动返回到池中。

有一些连接处于活动状态,也有一些连接处于非活动但可用的状态。如果您的应用程序请求连接并且池中有可用连接,则不需要创建新连接。

大多数驱动程序都会提供 MongoClient 类型的对象。

每个应用程序使用一个 MongoClient 实例,除非该应用程序连接到许多单独的集群。每个 MongoClient 实例都管理创建 MongoClient 时指定的 MongoDB 集群或节点的连接池。MongoClient 对象在大多数驱动程序中都具有线程安全性。

注意

MongoClient 实例存储在应用程序可以全局访问的位置。

要将连接池与 LDAP 结合使用,请参阅 LDAP 连接池行为。

mongos 路由器为集群中的每个节点都设有连接池。分片集群内各个节点的连接可用性会影响延迟。操作必须等待连接成功建立。

您可以在这些位置指定连接池设置:

  • MongoDB URI

  • 应用程序的 MongoClient 实例

  • 应用程序框架的配置文件

设置
说明

大多数驱动程序默认为永不超时。某些版本的 Java 驱动程序(例如版本 3.7)默认为 10

默认: 0 (对大多数驱动程序而言)。请参阅驱动程序文档。

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

maxConnecting 除了Rust 驱动程序之外的所有其他驱动程序都支持。

提高 maxConnecting 的值可以让客户端更快地与服务器建立连接,但会增加连接风暴的几率。如果 maxConnecting 的值太低,连接池可能会遇到严重的限制,并且客户端检查连接时尾延迟会增加。

默认: 2

连接在池中可保持空闲状态的最大毫秒数,在此时间过后,连接将被删除或关闭。

默认设置:请参阅驱动程序文档。

连接池中打开的最大连接数。当连接池达到最大连接数时,新连接会一直等待直到达到 waitQueueTimeoutMS 的值。

默认: 100

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

默认值0

每个 TaskExecutor 连接池可向任意给定 mongod 实例开放的最大出站连接数。

默认值:2 64 - 1

参数仅适用于分片部署。

ShardingTaskExecutorPoolMaxSize 的可选覆盖项,用于设置每个 TaskExecutor 连接池可以向配置服务器打开的最大出站连接数。

当设置为:

  • -1,使用 ShardingTaskExecutorPoolMaxSize。这是默认设置。

  • 大于 -1 的整数值,覆盖每个 TaskExecutor 连接池可以向配置服务器打开的出站连接数的最大数量。

参数仅适用于分片部署。

默认值-1

6.0 版本中的新功能

每个 TaskExecutor 连接池可向任意给定 mongod 实例开放的最小出站连接数。

默认值1

参数仅适用于分片部署。

ShardingTaskExecutorPoolMinSize 的可选覆盖项,用于设置每个 TaskExecutor 连接池可以向配置服务器打开的最小出站连接数。

当设置为:

  • -1,使用 ShardingTaskExecutorPoolMinSize。这是默认设置。

  • 大于 -1 的整数值;覆盖每个 TaskExecutor 连接池可以向配置服务器打开的最小出站连接数。

参数仅适用于分片部署。

默认值-1

6.0 版本中的新功能

TCP 连接判定超时之前可等待的毫秒数。

不要socketTimeoutMS 作为防止服务器长时间运行的机制。

设置过短的套接字超时时间可能会导致操作在服务器响应之前因超时而报错。

默认值0,表示无超时。

线程可以等待连接变为可用状态的最大等待时间(以毫秒为单位)。值为0表示没有限制。

默认值0

后退

性能