MongoDB,MaxPoolSize 限制是否适用于所有客户端实例?

Ble*_*ter 6 c# mongodb

我将MaxPoolSize值增加到 3000。这是否意味着使用此实例允许 3000 个并发连接,或者它也计算通过其他对象实例的任何其他连接?

var connectionString = "mongodb://username:password@ip:27017/MyDB?maxPoolSize=3000"
var client = new MongoClient(connectionString);
return client.GetDatabase(databaseName);
Run Code Online (Sandbox Code Playgroud)

Tom*_*zzo 7

嗯,和你说的不完全一样。该文章提供的连接池是如何工作的,它基本上指出,一个简短的解释:

大多数 MongoDB 驱动程序都支持设置应用程序可用的最大连接数(池大小)的参数。连接池大小可以被认为是您的驱动程序可以服务的最大并发请求数。默认池大小因驱动程序而异,例如,对于 Node,它是 5,而对于 Python,它是 100。如果您预计应用程序会收到许多并发或长时间运行的请求,我们建议增加池大小 - 相应地调整!

服务器上的总传入连接限制由操作系统或maxIncomingConnections(或MongoDB 2.4 及更早版本中的maxConns)施加的限制中的较小者确定。

其实这两种设置的区别如下:

  • 连接池 =每个客户端的连接限制
  • 连接限制 =允许的客户端连接总数

  • 谢谢。我看到服务器上的默认 `maxIncomingConnections` 是 `65536`。但是在客户端,我还不清楚。例如,在我上面的代码中,如果我创建一个名为 `client` 的 MongoClient 对象,最大池为 3000,然后创建另一个名为 `client2` 的对象使用相同的连接字符串,我是否有 6000 个连接? (3认同)
  • 不,这意味着您的服务器授予每个客户端不超过 3000 个并发请求。如果您将两个客户端都连接到它,您将分配 65536 个连接中的 2 个。 (2认同)