Должен ли я иметь новое соединение MongoDB на поток - PullRequest
0 голосов
/ 05 мая 2018

При использовании кластерной библиотеки Node.js следует ли устанавливать соединение с MongoDB в главном потоке или в каждом дочернем потоке?

Во-первых, могут ли несколько потоков использовать одно и то же соединение?

Во-вторых, было бы более эффективным с точки зрения производительности использовать те же или отдельные соединения

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

По моему опыту, каждому ребенку нужно соединение, я использую следующий шаблон в коде приложения, например

const cluster       = require('cluster');
const mongoose      = require('mongoose');
...

if (cluster.isMaster) { // Parent, only creates clusters
  global.processId = 'Master';
  for (let i = 0; i < 2; ++i) {
      cluster.fork();
  }
  ...
} else { // Child cluster
    // connect
    mongoose.connect('mongodb://localhost/myDB');
    ...
}
0 голосов
/ 05 мая 2018

Каждый процесс должен иметь свое собственное соединение.

Не смешивайте сессии. Используйте connect-mongo для сеансов.

Как только клиент устанавливает сеанс на одном из рабочих, он не должен использовать какой-либо другой экземпляр для операций, связанных с этим клиентом, таким образом, вы можете кэшировать клиентов на их соответствующих экземплярах сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...