пул соединений nodejs mongodb

#node.js #mongodb #mern

#node.js #mongodb #mern

Вопрос:

Я новичок в 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-е соединение не может быть установлено?

Ответ №1:

Пул соединений для каждого сервера, о котором известно клиенту. Многократный вызов connect не информирует клиента о дополнительных серверах и, следовательно, не влияет на количество подключений в пуле.

Отдельно клиент содержит одно соединение мониторинга на каждый известный сервер, так что при типичном развертывании набора реплик клиент, который не выполняет никаких операций, выполняемых приложением, будет иметь 3 открытых соединения, а не 1. В разделенных кластерах количество подключений для мониторинга совпадает с количеством процессов mongos.

Аналогично этому, если вы подключаетесь к набору реплик из 3 узлов с минимальным размером пула соединений, установленным равным 5, клиент установит 15 подключений приложений (по 5 на каждый узел RS) в дополнение к 3 подключениям мониторинга.