2012-08-25 9 views
6

बढ़ते रहते हैं मैं अपनी कनेक्शन सीमा को मारता रहता हूं, लेकिन http यातायात लगातार बना रहा है। मैं अपने mongod प्रक्रिया प्रोफ़ाइल एमएमएस का इस्तेमाल किया और देखा कि कनेक्शन की संख्या रहता बढ़ती:मोंगोडीबी कनेक्शन

mongod connections

मैं Node.js (एक्सप्रेस) के लिए mongoskin आवरण का उपयोग कर रहा हूँ।

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(); 
}; 

मैं कुछ गलत कर रहा हूँ: मैं कस्टम मार्ग मिडलवेयर का एक टुकड़ा अन्य मार्गों निष्पादित करने से पहले मोंगो db से कनेक्ट करता है? मुझे कनेक्शन कैसे खोलना और बंद करना चाहिए?

उत्तर

7

mongoskinnode-mongodb-native ड्राइवर के लिए एक रैपर है इसलिए अंतर्निहित मूल चालक के लिए विकल्प अभी भी लागू होते हैं।

कुछ सुझाव इस्तेमाल किया कनेक्शन की संख्या कम करने के लिए:

  1. आवेदन शुरू करने से पहले अपने कनेक्शन खोलें (आप प्रत्येक अनुरोध में एक कनेक्शन को खोलने के लिए नहीं करना चाहते हैं):

    var db = new mongoskin.db(...) 
    db.open(function(err, db) { 
        // Application logic 
    }) 
    
  2. नोड-मोंगो-मूल connection poolSize समायोजित करें। कनेक्शन पूलिंग हमेशा नए कनेक्शन खोलने के बजाय आपके आवेदन में कनेक्शन के सेट को साझा करने की अनुमति देता है। डिफ़ॉल्ट poolSize पुराने चालकों में 1 और 5 नोड मोंगो देशी 1.1.4 चालक जो अगस्त 16 जारी किया गया था के रूप में है, 2012

    तो तुम जैसे कुछ की कोशिश कर सकते:

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

धन्यवाद स्टेनी। मैं अपने प्रत्येक एक्सप्रेस कॉन्फ़िगरेशन अनुभाग में डीबी से जुड़ा हुआ हूं, फिर अपने पहले कस्टम मिडलवेयर में res.db = app.set ('mongoConn') सेट करें। पूरी तरह से काम किया। –

संबंधित मुद्दे