gpt4 book ai didi

node.js - Mongoose poolSize 是如何工作的

转载 作者:IT老高 更新时间:2023-10-28 13:30:23 26 4
gpt4 key购买 nike

我正在尝试提高我的应用程序的性能,并了解到创建多个客户端连接是一种很好的做法,以便 mongodb 可以并行处理查询(每个客户端连接的队列被同步处理)

我正在使用 Mongoose ,并阅读连接文档,我看到您可以设置 poolSize(默认为 5)。我没有在我的连接上设置池大小,所以假设它应该是默认的 5

var mongoOptions = {
server: {
poolSize: Number(process.env.MONGO_POOLSIZE) || 5
}
}
mongoose.connect(DATABASE_URL + "?authMechanism=SCRAM-SHA-1", mongoOptions);

在我的 mongo 客户端中运行 db.serverStatus().connections,并查看以下响应{ "current": 9, "available": 195, "totalCreated": NumberLong(2058) }

我知道这包括 mongo shell 连接,但为什么它是 9 个当前连接对 6 个?当我断开我的服务器时,它会按预期下降到 1。

如果我确实将 poolSize 设置为 180 ,我仍然会得到 9 个连接而不是我的设置。

谁能解释一下

  1. mongoose 连接池是如何工作的
  2. 为什么我的 poolSize 没有得到应用,以及
  3. 是否有多个连接意味着我的查询将由 mongo db 并行处理?还是一个 Mongoose 连接意味着一个客户端连接?

最佳答案

mongoose 连接池是如何工作的?

  • 大多数 MongoDB 驱动程序都支持设置应用程序可用的最大连接数(池大小)的参数。默认池大小因驱动程序而异,Mongoose 为 5。但是,Mongoose 可能会打开多个 poolSize 连接供内部使用。

为什么我的 poolSize 没有被应用?

  • poolSize 是 MongoDB 驱动程序将为此连接保持打开的最大套接字数。 Mongoose 将自动管理与 MongoDB 服务器的连接数。

是否有多个连接意味着我的查询将由 mongo db 并行处理?还是一个 Mongoose 连接意味着一个客户端连接?

  • MongoDB 一次只允许每个套接字执行一项操作。因此,可以将连接池大小视为驱动程序可以服务的最大并发请求数。

关于node.js - Mongoose poolSize 是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42826525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com