MongoDB连接不断增加

Jon*_*ake 6 mongodb node.js express mongoskin node-mongodb-native

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

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();
};
Run Code Online (Sandbox Code Playgroud)

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

Ste*_*nie 7

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

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

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

     var db = new mongoskin.db(...) 
     db.open(function(err, db) { 
         // Application logic
     })
    
    Run Code Online (Sandbox Code Playgroud)
  2. 调整node-mongo-native 连接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);
    
    Run Code Online (Sandbox Code Playgroud)