我一直在达到连接限制,但http流量仍保持一致。我用MMS来描述我的mongod进程,看到连接数不断上升:
我正在使用Node.js(Express)的mongoskin包装器。我有一个自定义路由中间件,在执行其他路由之前连接到mongo db:
var _connect = function(req, res, next) {
res.db = mongoskin.db(_us.sprintf(
'%s:%s@localhost:27017/%s?auto_reconnect',
app.set('mongoDbUser'),
app.set('mongoDbPw'),
app.set('mongoDb')
));
next();
};
我做错了吗?我应该如何打开和关闭连接?
答案 0 :(得分:7)
mongoskin是node-mongodb-native驱动程序的包装器,因此底层本机驱动程序的选项仍然适用。
减少使用连接数的一些建议:
在启动应用程序之前打开连接(您不想在每个请求中打开连接):
var db = new mongoskin.db(...)
db.open(function(err, db) {
// Application logic
})
调整node-mongo-native connection poolSize。连接池允许在应用程序中共享一组连接,而不是始终打开新连接。默认的poolSize在旧驱动程序中为1,而在2012年8月16日发布的node-mongo-native 1.1.4驱动程序中为5。
所以你可以尝试类似的东西:
var mongoskin = require('mongoskin');
var serverOptions = {
'auto_reconnect': true,
'poolSize': 5
};
var db = mongoskin.db('localhost:27017/test', serverOptions);