6

接続制限に達し続けていますが、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();
};

私は何か間違ったことをしていますか?接続を開いたり閉じたりするにはどうすればよいですか?

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 に答える