Я действительно испытываю стресс из моего кода подключения MongoDB.Ограничение подключения к драйверу MongoDB в Node.js
Я недавно заметил, что у меня много открытых подключений. В конечном итоге достигается ошибка «ограничение соединения» (в Linux), и я должен перезапустить все, чтобы заставить его работать.
db.js:
var mongodb = require('mongodb');
var connection = null;
exports.getCollection = function(name, connectionConfig){
return getConnection(connectionConfig)
.then(function(conn){
return conn.collection(name);
})
.catch(function(err){
throw err;
});
};
function getConnection(configuration){
return promise(function(deferred){
configuration = configuration || config.envConfig.mongoConnections[0];
var isMainConnection = configuration === config.envConfig.mongoConnections[0];
if (isMainConnection && connection){
return { result: connection, isImediate: true };
}
var server = getServer(configuration);
var db = new mongodb.Db(configuration.name, server, { safe: true, auto_reconnect: true });
function openConnection(err, c){
if (err){
return deferred.reject(err);
}
if (isMainConnection){
connection = c;
}
console.log("Db connection opened.");
c.authenticate(configuration.user, configuration.pass, function (err){
if (err) {
c.close();
return deferred.reject(err);
}
return deferred.resolve(c);
});
c.on('close', function(){
console.log("Db connection closed.");
connection = null;
return deferred.reject(new Error("Db closed."));
});
}
db.open(openConnection);
return deferred.promise;
});
}
function getServer(config){
return new mongodb.Server(config.host, config.port, { auto_reconnect: true });
}
Может кто-нибудь мне помочь?