Подтвердить что ты не робот

MongoDB:> 5 открытых соединений для одного обработчика db

Я новичок в nodejs и mongdb, которые я буду использовать в моем проекте, и как только я подключился к подключению db, я был потрясен, увидев, сколько соединений с базами данных действительно делает мой код. Итак, учитывая этот простой код фрагмента:

var express = require('express');
var mongo = require('mongodb');  
var app = express();

// Further details:
// nodejs: v0.8.18
// mongod: v2.2.2
// node mongodb driver: v1.2.10

app.get('/', function(req, res){
    res.send('<h1>Ok</h1>');
});

var setUp = function() {   
    // get a handler to the testDB Database
    mongo.Db.connect('mongodb://localhost:27017/testDB', function(err, db) {
        if (err)
            throw err;
        // create a test collection in the database
        db.createCollection('test', function(err, test) {
            if (err)
                throw err;
            // insert a dummy document into the test collection          
            test.insert({'name':'admin', 'pass':'admin'});

            app.listen(3000); 
            console.log('App listening on port 3000');
        });
    });
}

setUp();

демон mongo выводит этот бит журнала при запуске процесса nodejs:

... connection accepted from 127.0.0.1:40963 #34 (1 connection now open)
... connection accepted from 127.0.0.1:40964 #35 (2 connections now open)
... connection accepted from 127.0.0.1:40965 #36 (3 connections now open)
... connection accepted from 127.0.0.1:40966 #37 (4 connections now open)
... connection accepted from 127.0.0.1:40967 #38 (5 connections now open)
... connection accepted from 127.0.0.1:40968 #39 (6 connections now open)
... end connection 127.0.0.1:40963 (5 connections now open)
... allocating new datafile /var/data/testDB.ns, filling with zeroes...
...

и этот, когда процесс завершается:

... connection 127.0.0.1:40964 (4 connections now open)
... connection 127.0.0.1:40965 (3 connections now open)
... connection 127.0.0.1:40966 (2 connections now open)
... connection 127.0.0.1:40967 (1 connection now open)
... connection 127.0.0.1:40968 (0 connections now open)

Помогает ли драйвер mongo сделать так много соединений с mongod, чтобы получить один обработчик db, или что-то не так с тем, как я это сделал? Я действительно ожидал увидеть только одно открытое соединение...

4b9b3361

Ответ 1

Db.connect открывает пул из 5 подключений по умолчанию. Если вы хотите ограничить это одним соединением, вы можете сделать это с помощью server следующих параметров:

mongo.Db.connect(
    'mongodb://localhost:27017/testDB', 
    {server: {poolSize: 1}}, 
    function(err, db) { ...

Ответ 2

Вы также можете передать это как

var mongoclient = new mongodb.MongoClient(new mongodb.Server(
    'localhost', 27017, {'native_parser': true, 'poolSize': 1} 
));