Run express server using cluster setup (CC-54)
parent
d279556457
commit
8b0e2d91d3
|
@ -16,6 +16,12 @@ const cors = require('cors');
|
|||
const mongoose = require('mongoose');
|
||||
const {exec} = require('child_process');
|
||||
|
||||
// cluster mode
|
||||
const cluster = require('cluster');
|
||||
const envWorkerNum = process.env.NODE_WORKER_COUNT;
|
||||
const cpuCount = require('os').cpus().length;
|
||||
const numWorkers = (envWorkerNum && envWorkerNum < cpuCount) ? envWorkerNum : cpuCount;
|
||||
|
||||
// own modules
|
||||
const config = require('./config/config');
|
||||
const urls = require('./config/api-url');
|
||||
|
@ -108,7 +114,7 @@ if (process.env.NODE_ENV === config.test.unit.env || process.env.NODE_ENV === co
|
|||
const mongoServer = new MongodbMemoryServer();
|
||||
mongoose.Promise = Promise;
|
||||
mongoServer.getConnectionString().then((mongoUri) => {
|
||||
mongoose.connect(mongoUri);
|
||||
mongoose.connect(mongoUri, { useNewUrlParser: true });
|
||||
|
||||
mongoose.connection.on('error', (e) => {
|
||||
if (e.message.code === 'ETIMEDOUT') {
|
||||
|
@ -139,17 +145,29 @@ if (process.env.NODE_ENV === config.test.unit.env || process.env.NODE_ENV === co
|
|||
});
|
||||
});
|
||||
} else {
|
||||
const mongoosePromise = mongoose.connect(config.database.uri + config.database.db);
|
||||
mongoosePromise.then((db) => {
|
||||
mongoose.connect(config.database.uri + config.database.db, {useNewUrlParser: true}).then((db) => {
|
||||
if (cluster.isMaster) {
|
||||
// Fork workers
|
||||
for (let i = 0; i < numWorkers; i++) {
|
||||
cluster.fork();
|
||||
}
|
||||
logger(`Master ${process.pid} is running. Forking ${numWorkers} workers`);
|
||||
|
||||
//Check if worker id is died
|
||||
cluster.on('exit', (worker, code, signal) => {
|
||||
logger(`worker ${worker.process.pid} died`);
|
||||
});
|
||||
} else {
|
||||
app.listen(config.port, (err) => {
|
||||
if (err !== undefined) {
|
||||
error('Error on startup, ', err);
|
||||
error(`Error on startup ${err}`);
|
||||
} else {
|
||||
logger('Listening on port ' + config.port);
|
||||
logger(`Worker ${process.pid} started. Listening on port ${config.port}`);
|
||||
signatureCronJob.start();
|
||||
backupCronJob.start();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue