MongoDB Atlas Nodejs脚本-连接大约需要2到3秒才能在新加坡群集

时间:2019-07-10 12:58:15

标签: node.js mongodb aws-lambda mongodb-atlas

我正在使用以下代码段连接到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;。我希望在请求完成后关闭连接。

1 个答案:

答案 0 :(得分:0)

2-3秒非常合理:建立连接需要mongo花费一些时间。根据您链接的文档:

  

当第一次调用Lambda函数并且您的AWS Lambda函数中的MongoDB客户端连接到MongoDB时,初始启动成本大约为5到10秒。分片群集与mongos的连接比连接副本集的连接要快。在Lambda函数的生命周期内,后续连接将显着加快。

使用节点客户端连接到本地运行的mongo需要1.5秒钟,连接到Atlas沙箱实例需要2秒钟。