2016-10-18 5 views
0

Ich habe ein Problem mit node.js/Cluster und Mungo Verbindung. Ich bin mir nicht sicher, ob ich mehrere Fork meines Webservers auf der gleichen Datenbank mit Mungo verbinden kann, oder?Mongoose Verbindung Fehler mit Cluster

Es ist ein Ausschnitt aus meinem Code:

const express = require('express'); 
const app = express(); 
const bodyParser = require('body-parser'); 
const helmet = require('helmet'); 
const mongoose = require('mongoose'); 
const http = require('http'); 

if (cluster.isMaster) { 
    const cpuCount = require('os').cpus(); 
    cpuCount.forEach((cpu) => { 
    cluster.fork(); // fork web server 
    }); 
    cluster.on('exit', (worker, code, signal) => { 
    ... // log 
    cluster.fork(); // on dying worker, respawn 
    }); 
} else { 

    //express middleware 
    app.use(bodyParser.json()); 
    app.use(bodyParser.urlencoded({ extended: false })); 
    app.use(helmet()); 
    ... // express and global config 

    // The mongoose connection dit not work with cluster 
    mongoose.connect(__DB_URL__); // where __DB_URL__ = 'mongodb://database/test' 

    ... //server config 
    const server = http.createServer(app); 
    server.listen 
} 

Ich bin in der Lage, diesen Server zu laufen, ohne cluster mit (ohne den ersten Teil des Codes) (Oder mit cluster aber ohne Mungo ...), und wenn ich diesen Server mit cluster; Arbeiter stürzten nicht ab, aber Mangustenverbindung !!

Dies ist der json Fehler:

{ MongoError: failed to connect to server [database:27017] on first connect 
    at Pool.<anonymous> (/Users/...) 
    ... // long path error 
    name: 'MongoError', 
    message: 'failed to connect to server [database:27017] on first connect' } 

Ich bin wirklich in der Lage Mungo in jeder Gabel von Cluster zu verwenden, oder gibt es eine andere Lösung?

Antwort

1

versuchen, diese seine für mich arbeiten ....

const express = require('express'); 
const app = express(); 
const bodyParser = require('body-parser'); 
//const helmet = require('helmet'); 
const mongoose = require('mongoose'); 
const cluster = require('cluster'); 
const http = require('http'); 

var dbURI = 'mongodb://localhost:27017/dal'; 


// Create the database connection 
mongoose.connect(dbURI); 


mongoose.connection.on('connected', function() { 
console.log('Mongoose default connection open to ' + dbURI); 
}); 


    mongoose.connection.on('error',function (err) { 
    console.log('Mongoose default connection error: ' + err); 
}); 


    mongoose.connection.on('disconnected', function() { 
    console.log('Mongoose default connection disconnected'); 
    }); 

// If the Node process ends, close the Mongoose connection 
process.on('SIGINT', function() { 
mongoose.connection.close(function() { 
console.log('Mongoose default connection disconnected through app  termination'); 
    process.exit(0); 
}); 
}); 


    if (cluster.isMaster) { 
    const cpuCount = require('os').cpus(); 
    cpuCount.forEach((cpu) => { 
    cluster.fork(); // fork web server 
    }); 
    cluster.on('exit', (worker, code, signal) => { 

    cluster.fork(); // on dying worker, respawn 
    }); 
    } else { 

    //express middleware 
    app.use(bodyParser.json()); 
    app.use(bodyParser.urlencoded({ extended: false })); 
    // app.use(helmet()); 

    app.listen(3000, function(){ 
console.log(3000); 
    }) 
} 
+0

JS-Code nicht wirklich nervt wurde .. Es wurde Mongo-Dämon: "( Sie sowieso Dank, habe ich versucht, den Code und es funktioniert gut –