2012-08-25 97 views
6

我一直在打我的连接限制,但http流量保持一致。我用MMS来分析我的mongod的过程中,看到连接的数量在不断上升:MongoDB连接不断增加

mongod connections

我使用Node.js的(快递)的mongoskin包装。我有一块自定义路由中间件,在执行其他路由之前连接到mongo db:

var _connect = function(req, res, next) { 
    res.db = mongoskin.db(_us.sprintf(
    '%s:%[email protected]:27017/%s?auto_reconnect', 
    app.set('mongoDbUser'), 
    app.set('mongoDbPw'), 
    app.set('mongoDb') 
)); 
    next(); 
}; 

我做错了什么?我应该如何打开和关闭连接?

回答

7

mongoskinnode-mongodb-native驱动程序的包装,因此底层本机驱动程序的选项仍然适用。

一些建议,以降低所使用的连接数:

  1. 启动应用程序之前打开的连接(你不想打开每个请求的连接):

    var db = new mongoskin.db(...) 
    db.open(function(err, db) { 
        // Application logic 
    }) 
    
  2. 调整节点 - mongo-native connection poolSize。连接池允许在您的应用程序中共享一组连接,而不是始终打开新的连接。默认poolSize为1的老司机和5作为节点蒙戈本土1.1.4驱动程序被发布08月16日的2012年

    所以,你可以尝试这样的:

    var mongoskin = require('mongoskin'); 
    var serverOptions = { 
        'auto_reconnect': true, 
        'poolSize': 5 
    }; 
    var db = mongoskin.db('localhost:27017/test', serverOptions); 
    
+0

感谢Stennie。我在每个Express配置部分连接到数据库,然后在我的第一个自定义中间件中设置res.db = app.set('mongoConn')。完美工作。 –