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

连接池

在本指南中,您可以学习;了解.NET/ C#驱动程序如何使用连接池来管理与MongoDB 部署的连接,以及如何在应用程序中配置连接池设置。

连接池是由.NET/ C#驱动程序维护的打开数据库连接的缓存。当应用程序请求连接到MongoDB时, .NET/ C#驱动程序会无缝地从池中获取连接,执行操作,然后将连接返回到池中以供重用。

连接池有助于减少应用程序延迟和.NET/ C#驱动程序创建新连接的次数。下图概括地说明了 MongoClient 如何管理连接池:

CMAP 图

您可以在 MongoClient对象或连接 URI 中指定以下连接池设置:

设置
说明

ConnectTimeout

在建立新连接时,.NET/C# 驱动程序等待的最长时间,超过该时间将超时。

数据类型TimeSpan
默认:30 秒
连接 URI 示例connectTimeoutMS=0

MaxConnecting

每个池可以同时建立的最大连接数。如果达到此限制,则后续请求将等待直到建立连接或另一个使用中的连接被检查回池。

数据类型integer
默认2
连接 URI 示例maxConnecting=3

MaxConnectionIdleTime

连接在池中保持空闲状态的最长时间。当连接超过此限制时, .NET/ C#驱动程序将关闭该连接并将其从池中删除。

数据类型TimeSpan
默认:10 分钟
连接 URI 示例maxIdleTimeMS=60000

MaxConnectionLifeTime

连接可以被池化的最长时间。当连接超过此限制时,.NET/C# 驱动程序会关闭连接并从连接池中删除连接。

数据类型TimeSpan
默认:30 分钟
连接 URI 示例maxLifeTimeMS=50000

MaxConnectionPoolSize

连接池维护的并发连接最大数。如果达到最大连接池大小,则后续请求将等待直到连接可用。

数据类型integer
默认100
连接 URI 示例maxPoolSize=150

MinConnectionPoolSize

连接池维护的最小并发连接数。如果因网络错误导致打开的连接数低于此值,则 .NET/C# 驱动程序会尝试创建新连接以维护此最小值。

数据类型integer
默认0
连接 URI 示例minPoolSize=3

SocketTimeout

.NET/C# 驱动程序在超时前等待服务器响应的时间长度。

数据类型TimeSpan
默认值:OS 默认值
连接 URI 示例socketTimeoutMS=100000

WaitQueueTimeout

线程在连接池中等待连接变可用的时间,直到超时。

数据类型TimeSpan
默认:2 分钟
连接 URI 示例waitQueueTimeoutMS=100000

以下代码使用 MaxConnectionPoolSize 参数创建最大连接池大小为 50 的客户端:

var settings = MongoClientSettings.FromConnectionString("<connection URI>");
settings.MaxConnectionPoolSize = 50;
var client = new MongoClient(settings);

以下代码创建一个配置与前面的示例相同的客户端,但使用了连接 URI:

var settings = MongoClientSettings.FromConnectionString("<hostname>?maxPoolSize=50");
var client = new MongoClient(settings);

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

要进一步了解本指南所讨论的任何方法或类型,请参阅以下 API 文档: