node.js - MongoDB Atlas Nodejs 脚本 - 在新加坡连接集群大约需要 2 到 3 秒
问题描述
我正在使用以下代码段连接到 mongo,每个新连接大约需要 2 到 3 秒才能打开。只是想知道这是 MongoDB Atlas 的默认行为,还是我做错了什么。
const MongoClient = require('mongodb').MongoClient;
const uri = "mongodb+srv://<user>:<password>@<atlasUri>/test?retryWrites=true&w=majority";
console.time('connectionTime');
const client = new MongoClient(uri, { useNewUrlParser: true });
client.connect(err => {
console.timeEnd('connectionTime');
const collection = client.db("test").collection("devices");
// perform actions on the collection object
client.close();
});
我的代码在 AWS Lambda 函数中运行,我试图避免执行https://docs.atlas.mongodb.com/best-practices-connecting-to-aws-lambda/context.callbackWaitsForEmptyEventLoop = false;
中的建议。我更喜欢在请求完成后关闭连接。
解决方案
2-3 秒是相当合理的:mongo 需要一些时间来建立连接。根据您链接的文档:
首次调用 Lambda 函数并且您的 AWS Lambda 函数中的 MongoDB 客户端连接到 MongoDB 时,初始启动成本大约为 5 到 10 秒。连接到分片集群的 mongos 比连接到副本集更快。在 Lambda 函数的生命周期内,后续连接将明显更快。
我用节点客户端连接到本地运行的 mongo 需要 1.5 秒,连接到 atlas 沙箱实例需要 2 秒。
推荐阅读
- c++ - 编译器是否需要在基类中内联既是虚函数又是最终函数的函数?
- javascript - 为什么没有到达此元素的信息?
- css - CSS汉堡菜单不显示菜单
- android - 在 WiFi 热点 Android 7 Nougat 中获取 IP 地址时出错
- java - 尝试构建 nifi-maven 项目时出错
- sql - How to execute join between three slow change dimensions sort by all start date columns?
- xodus - 在 Xodus 数据库中最大化或强制进行完全垃圾收集
- php - 在 Blade 模板中的 Laravel 路由上使用 https
- c# - 检查列表是否已经有对象
- c# - 在 LINQ 中选择方法并将 int 转换为字符串值