Ne mongoDB ont reconnecter questions ou suis-je tout faux?

Je suis l'aide de nodejs et mongoDB - et je vais avoir quelques problèmes de connexion.

Bien, en fait, de "réveiller" les questions! Il se connecte parfaitement bien est super rapide et je suis heureux avec les résultats.

Mon problème: Si je n'utilise pas la connexion pendant un certain temps (je dis bien que, parce que le délai varie de 5+ minutes), il semble dans l'impasse. Je n'ai pas de déconnexion des événements déclenchés qu'il se bloque.

Finalement, je reçois une réponse d'Erreur: impossible de se connecter à [ * .mongolab.com: * ] - ( * = masqué valeurs)

Un redémarrage rapide de l'application, et la connexion est à nouveau magnifique. Parfois, si je ne le redémarrez pas l'application, je peux actualiser et il se reconnecte heureusement.

C'est pourquoi je pense qu'il est de "réveiller" les questions.

Ébauche de code:

Je n'ai pas le code, je ne pense pas que c'est nécessaire. Il fonctionne (à l'exception de la connexion à l'abandon)

Choses à noter: Il est juste l'un "se connecter" - je n'ai jamais le fermer. Je n'ai jamais rouvrir.

Je suis en utilisant la mangouste, le socketio.

/* constants */

var mongoConnect = 'myworkingconnectionstring-includingDBname';


/* includes */

/* settings */

/* Schema */

var db = mongoose.connect(mongoConnect);

    /* Socketio */

io.configure(function (){
    io.set('authorization', function (handshakeData, callback) {

    });
});

io.sockets.on('connection', function (socket) {

});//sockets

io.sockets.on('disconnect', function(socket) {
    console.log('socket disconnection')
});

/* The Routing */

app.post('/login', function(req, res){  

});

app.get('/invited', function(req, res){

});

app.get('/', function(req, res){

});

app.get('/logout', function(req, res){

});

app.get('/error', function(req, res){

});

server.listen(port);
console.log('Listening on port '+port);

db.connection.on('error', function(err) {
    console.log("DB connection Error: "+err);
});
db.connection.on('open', function() {
    console.log("DB connected");
});
db.connection.on('close', function(str) {
    console.log("DB disconnected: "+str);
});

J'ai essayé différentes configs ici, comme l'ouverture et la fermeture de tous les temps - je crois bien, le consensus général est de faire comme je le suis avec un open d'emballage du lot. ??

J'ai essayé une connexion testeur, qui garde le contrôle de l'état de la connexion... même si cela semble dire que tout est ok, le problème se produit toujours.

J'ai eu ce problème depuis le premier jour. J'ai toujours accueilli les MongoDB avec MongoLab.
Le problème semble être le pire sur localhost. Mais j'ai toujours le problème sur Azure et maintenant nodejit.su.

Comme cela arrive partout - ça doit être moi, MongoDB, ou mongolab.

D'ailleurs j'ai eu une expérience similaire avec le driver php trop. (à confirmer c'est sur nodejs si)

Il serait idéal pour un peu d'aide - même si quelqu'un dit "c'est normal"

merci d'avance

Rob

  • Pas sûr au sujet de MongoDB, cependant, dans la plupart des bases de données classiques), il est préférable d'ouvrir/fermer la connexion à la demande (c'est à dire à chaque fois que vous avez besoin pour y accéder) plutôt que de le laisser ouvert pour toujours. Pilotes de base de données sont généralement optimisés pour créer et gérer un pool de connexions derrière les coulisses pour cette (ouverture/fermeture) a tendance à être incroyablement rapide. Je serais curieux d'entendre ce que les gens avec de vrais MongoDB expérience dire sur cette question.
  • Merci Hector - ouais d'accord, seulement j'ai lu partout lorsque l'on étudie ce dit de le faire de la manière que j'ai (à moins que je comprends de façon incorrecte)
  • J'obtiens le même problème à la fois contre la MongoHQ et MongoLab cas, non seulement de mon Nœud de l'application, mais à partir de la mongo client de ligne de commande trop. MongoHQ soutien m'a suggéré de gérer cela à une application ou un pilote de niveau en renouvelant lorsque cela se produit. C'est une telle douleur à gérer cela au niveau de l'application que je suis surpris, ce n'est pas déjà traitée dans la mongodb conducteur ou dans la mangouste.
  • quelqu'un a compris cela? J'ai exactement la même configuration et le même problème exactement. C'est pire sur localhost, mais se produit toujours dans le cloud. Vous pouvez en principe obtenir une session d'un redémarrage. MongoLab semble assez beaucoup pas utilisable pour moi sur Azure à ce moment 🙁
  • Aussi avoir ce problème, mais à l'intérieur d'un hébergement privé et de la solution. Semble être lié à l'Mongo connexion et persistantes.
  • Découvrez ma solution ci-dessous.... Semble solide comme un roc maintenant.

InformationsquelleAutor rob_james | 2012-12-20