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) => { | ||||
|     app.listen(config.port, (err) => { | ||||
|       if (err !== undefined) { | ||||
|         error('Error on startup, ', err); | ||||
|       } else { | ||||
|         logger('Listening on port ' + config.port); | ||||
|         signatureCronJob.start(); | ||||
|         backupCronJob.start(); | ||||
|   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}`); | ||||
|         } else { | ||||
|           logger(`Worker ${process.pid} started. Listening on port ${config.port}`); | ||||
|           signatureCronJob.start(); | ||||
|           backupCronJob.start(); | ||||
|         } | ||||
|       }); | ||||
|     } | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue