node.js - nodejs + mongodb 连接池
问题描述
我是 mongodb 和 node.js 的新手,对连接池感到困惑。假设代码是这样的:
import mongodb from "mongodb";
const { MongoClient } = mongodb;
const client = new MongoClient("localhost:27017");
async function main() {
await client.connect();
}
根据驱动文档,MongoClient 的默认连接池大小为 5。
所以每次调用await client.connect();
都会创建 1 个到 mongod 的连接,如果我调用await client.connect()
6 次,则无法建立第 6 个连接?
解决方案
连接池是客户端知道的每个服务器。多次调用 connect 不会让客户端知道更多的服务器,因此不会影响池中的连接数。
另外,客户端每个已知服务器包含一个监控连接,因此在典型的副本集部署中,不执行任何应用程序发出的操作的客户端将有 3 个打开的连接,而不是 1 个。在分片集群中,监控连接的数量是与 mongos 进程的数量相同。
与此类似,如果您要连接到最小连接池大小设置为 5 的 3 节点副本集,则客户端将建立 15 个应用程序连接(每个 RS 节点 5 个)除了 3 个监控连接。
推荐阅读
- sql - 使用 sql 检查列表中的变量
- powershell - 在充满日志文件 powershell 脚本的几个文件夹中查找错误
- sql - 如何选择创建为创建默认值然后绑定到用户定义的数据类型的默认值?
- angular - 如何发送网络推送通知
- google-analytics - GA 中未收到带有 uid 但没有 cid 的测量协议
- glsl - 与渲染到屏幕相比,渲染到纹理时的图像质量较差
- javascript - 在 sap ui5 中返回控件数组作为聚合
- divide - Proteus 错误:瞬态分析期间检测到逻辑竞争条件
- shell - 字符串中特定单词之后的单词
- c# - 向导航属性添加新项目不会创建增量 int PK