2012-08-25 19 views
6

Continuo a colpire il limite di connessione, ma il traffico http è rimasto coerente. Ho usato MMS al profilo il mio processo mongod e ho visto che il numero di connessioni continua a salire:Le connessioni MongoDB continuano ad aumentare

mongod connections

sto utilizzando l'involucro mongoskin per Node.js (Express). Ho un pezzo di percorso middleware personalizzata che si collega al db mongo prima di eseguire altre vie:

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

Sto facendo qualcosa di sbagliato? Come dovrei aprire e chiudere le connessioni?

risposta

7

mongoskin è un wrapper per il driver node-mongodb-native, quindi sono ancora valide le opzioni per il driver nativo sottostante.

Alcuni suggerimenti per ridurre il numero di connessioni utilizzate:

  1. Aprire il collegamento prima di avviare l'applicazione (non si vuole aprire una connessione a ogni richiesta):

    var db = new mongoskin.db(...) 
    db.open(function(err, db) { 
        // Application logic 
    }) 
    
  2. Regola il nodo-mongo-native connection poolSize. Il pool di connessioni consente di condividere una serie di connessioni nell'applicazione anziché aprire sempre nuove connessioni. Il poolSize di default è di 1 su vecchi driver e 5, come del driver nodo mongo nativo 1.1.4 che è stato rilasciato 16 agosto, 2012.

    così si potrebbe provare qualcosa di simile:

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

Grazie Stennie. Mi sono connesso al db in ciascuna delle mie sezioni di configurazione Express, quindi ho impostato res.db = app.set ('mongoConn') nel mio primo middleware personalizzato. Ha funzionato perfettamente –

Problemi correlati