2014-07-21 4 views
6

J'utilise nodejs construit dans le module de cluster dans mon application mongodb (non partitionné) utilisé pour stockage dans chaque cluster (travailleur) connexion est faite en utilisant la méthode mongoose.createConnection et se ferme après l'insertion de données.nœud js cluster connexion mongoose

Mais ce que je suis dans l'attente est à chaque fois qu'une demande est faite, elle ouvre la connexion à la DB et processus de demande et fermer la connexion.

Mais ce que je remarqué que quand je vérifier le journal de MongoDB toujours une connexion ouverte et son nombre sligtly plus grand que pas de processeur/(nœuds du cluster).

et je mets poolSize: 1, autreconect: méthode fausse encore quelques connexions ne se ferment pas, même après la fermeture() est appelée.

mes observations sont en cas d'erreur de connexion happends la connexion est pas fermée S'il vous plaît aidez-moi

J'utilise script suivant pour obtenir la connexion.

module.exports.getDb = function() { 

    var dburl = 'mongodb://localhost/DB'; 


    db = mongoose.createConnection(dburl, { 
     server: { 
      socketOptions: { 
       keepAlive: 1, 
       connectTimeoutMS: 30000 
      }, 
      auto_reconnect: false, 
      poolSize: 1 

     } 

    }, function (err) { 

     console.log(err) 
    }); 

    db.on('error', function (err) { 
     console.log(err + " this is error"); 
     db.close(); 
    }); 

    return db; 

} 

et je ferme la connexion en utilisant db.close() à la fin du rappel de requête evey.

+0

Pouvons-nous voir du code? –

+0

J'ai mis à jour la question en ajoutant mon script de connexion et ceci est sur le processus de travail. – vimalpt

Répondre

0

Vous cherchez quelque chose comme ça?

db.connection.on('error', function (e) { 
    console.log(e + " this is error"); 
    db.close(); 
}); 

Pour mon serveur API, j'ai écrit un plugin pour Hapi pour gérer cela. Jetez un coup d'oeil, cela pourrait vous aider.

'use strict'; 

var bluebird = require('bluebird'); 
var mongoose = bluebird.promisifyAll(require('mongoose')); 

exports.register = function(plugin, options, next) { 

    mongoose.connect(options.mongo.uri, options.mongo.options, function (e) { 
    if (e) { 
     plugin.log(['error', 'database', 'mongodb'], 'Unable to connect to MongoDB: ' + e.message); 
     process.exit(); 
    } 

    mongoose.connection.once('open', function() { 
     plugin.log(['info', 'database', 'mongodb'], 'Connected to MongoDB @ ' + options.mongo.uri); 
    }); 

    mongoose.connection.on('connected', function() { 
     plugin.log(['info', 'database', 'mongodb'], 'Connected to MongoDB @ ' + options.mongo.uri); 
    }); 

    mongoose.connection.on('error', function (e) { 
     plugin.log(['error', 'database', 'mongodb'], 'MongoDB ' + e.message); 
    }); 

    mongoose.connection.on('disconnected', function() { 
     plugin.log(['warn', 'database', 'mongodb'], 'MongoDB was disconnected'); 
    }); 
    }); 

    return next(); 
}; 

exports.register.attributes = { 
    name: 'mongoose', 
    version: '1.0.0' 
};