Сценарий MongoDB Atlas Nodejs - подключение занимает около 2-3 секунд для кластеризации в Сингапуре - PullRequest
0 голосов
/ 10 июля 2019

Я использую следующий фрагмент для подключения к Монго, и каждое новое подключение занимает около 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, и я стараюсь избегать выполнения context.callbackWaitsForEmptyEventLoop = false;, предложенного в https://docs.atlas.mongodb.com/best-practices-connecting-to-aws-lambda/.. Я предпочитаю закрывать соединение после завершения запроса.

1 Ответ

0 голосов
/ 10 июля 2019

2-3 секунды довольно разумно: для установления соединения требуется немного времени.В соответствии с документом, который вы указали:

Существует небольшая начальная стоимость запуска, составляющая примерно 5-10 секунд, когда функция Lambda вызывается впервые, а клиент MongoDB в вашей функции AWS Lambda подключается кMongoDB.Соединения с mongos для сегментированного кластера быстрее, чем подключение к набору реплик.Последующие подключения будут значительно быстрее в течение жизненного цикла функции Lambda.

У меня уходит 1,5 секунды, чтобы подключиться к локально работающему монго с клиентом узла, и 2 секунды, чтобы подключиться к песочнице атласа.экземпляр.

...