node.js - MongoDB 中的连接池

标签 node.js mongodb connection-pooling

在使用 MongoDB 连接池的 MongoDB 数据库支持的 NodeJS 上工作。对打开的连接数量有疑问。

当我们使用以下代码在NodeJS中连接到mongoDB数据库时:

MongoClient.connect(url, {  
  poolSize: 25
},function(err, db) {
    console.log('connected successfully, reuse this db object in the whole application');
    }
);

正在观察和测试 mongoDB 数据库的行为,但对此有一些疑问。

问题:

  1. 连接池是否以最佳方式自动打开和关闭连接,或者程序员是否需要对此进行优化?
  2. 如果这可以优化怎么办?

最佳答案

请注意,我从四年前 Neil 的慷慨评论中摘录了大部分内容,以便将此问题标记为已回答。


连接池行为

使用连接池时,连接会根据需要自动建立(当不存在空闲连接时)并释放(在一段时间不活动后)。如果需要,您可以通过指定 maxPoolSizeminPoolSize 来定义池的缩放限制。默认会创建一个有 5 个连接的连接池。你可以read more about connection pools from the Mongo docs.

If you expect to use a lot of connections then you could "pre-heat" by sending about 20 or so parallel "trivial" requests to the server to force the pool to grow.

优化

您还询问了优化。我同意 Neil 的观点,对于编写良好的查询,每分钟 5,000 个请求应该不是问题。如果需要调优连接池,可以引用Mongo's guide . <强> Indexes但是,通常对性能影响更大。

关于node.js - MongoDB 中的连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50271555/

相关文章:

Java 数据库连接池(BoneCP vs DBPool vs c3p0)

sql-server - Entity Framework ,如何增加限制?

javascript - 计算我的网页的点击次数

javascript - JS async (async/await) 返回 Promise 但也执行函数

c# - MongoDb c# 驱动程序 2.0 BsonNull 用法

MongoDB(Java): How to cancel map-reduce (or aggregate)

c# - 一个 DAO 类,用于访问 SQL Server、MySQL 和 MongoDB 中的数据库

javascript - 如何通过点击页面上的按钮触发服务器发送SSE?

node.js - 如何在多个条件下做简单的 Mongoose findOne?

java - mongodb 连接池