6

我一直在达到我的连接限制,但 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();
};

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

4

1 回答 1

7

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

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

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

     var db = new mongoskin.db(...) 
     db.open(function(err, db) { 
         // Application logic
     })
    
  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);
    
于 2012-08-25T23:36:07.310 回答