2012-08-25 17 views
6

Sigo llegando al límite de mi conexión, pero el tráfico http se ha mantenido constante. Solía ​​MMS al perfil mi proceso mongod y vi que el número de conexiones sigue en aumento:Las conexiones MongoDB siguen aumentando

mongod connections

estoy usando la envoltura mongoskin para Node.js (Express). Tengo una hoja de ruta middleware personalizado que se conecta a la base de datos mongo antes de ejecutar otras rutas:

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

¿Estoy haciendo algo mal? ¿Cómo debería abrir y cerrar conexiones?

Respuesta

7

mongoskin es un contenedor para el controlador node-mongodb-native por lo que las opciones para el controlador nativo subyacente aún se aplican.

Algunas sugerencias para reducir el número de conexiones utilizado:

  1. Abra su conexión antes de iniciar la aplicación (que no desea abrir una conexión en cada solicitud):

    var db = new mongoskin.db(...) 
    db.open(function(err, db) { 
        // Application logic 
    }) 
    
  2. Ajusta el nodo-mongo-native connection poolSize. La agrupación de conexiones permite compartir un conjunto de conexiones en su aplicación en lugar de abrir siempre nuevas conexiones. El poolSize por defecto es 1 en los conductores mayores y 5 como del controlador 1.1.4 nodo-mongo-nativa que fue lanzado Aug 16, 2012.

    lo que podría intentar algo como:

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

Gracias Stennie. Me conecté a la base de datos en cada una de las secciones de configuración de Express, luego establecí res.db = app.set ('mongoConn') en mi primer middleware personalizado. Funcionó perfectamente –

Cuestiones relacionadas