MongoDB连接不断增加

时间:2012-08-25 18:40:16

标签: node.js mongodb express mongoskin node-mongodb-native

我一直在达到连接限制,但http流量仍保持一致。我用MMS来描述我的mongod进程,看到连接数不断上升:

mongod connections

我正在使用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();
};

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

1 个答案:

答案 0 :(得分:7)

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

减少使用连接数的一些建议:

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

     var db = new mongoskin.db(...) 
     db.open(function(err, db) { 
         // Application logic
     })
    
  2. 调整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);