Mongoose poolSize是如何工作的

时间:2017-03-16 06:12:05

标签: node.js mongodb performance mongoose

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

我正在使用mongoose,并且阅读连接文档,我看到你可以设置poolSize(默认为5)。我没有在我的连接上设置poolize,所以假设它应该是默认值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连接是否意味着一个客户端连接?

1 个答案:

答案 0 :(得分:0)

猫鼬连接池如何工作?

  • 大多数MongoDB驱动程序支持一个参数,该参数设置可用于您的应用程序的最大连接数(池大小)。每个驱动程序的默认池大小各不相同,因为Mongoose为5。但是,Mongoose可能打开多个poolSize连接供内部使用。

为什么我的poolSize无法应用?

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

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

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