wildduck/server.js

67 lines
1.9 KiB
JavaScript
Raw Normal View History

/* eslint global-require:0 */
2017-03-06 05:45:50 +08:00
'use strict';
2017-05-24 01:05:16 +08:00
process.env.UV_THREADPOOL_SIZE = 16;
2017-05-24 00:11:42 +08:00
2017-06-03 14:51:58 +08:00
const config = require('config');
const log = require('npmlog');
const packageData = require('./package.json');
2017-03-06 05:45:50 +08:00
log.level = config.log.level;
require('./logger');
2017-06-03 14:51:58 +08:00
const printLogo = () => {
2017-04-02 00:22:47 +08:00
log.info('App', '');
log.info('App', ' ## ## ###### ## ##### ##### ## ## #### ## ##');
log.info('App', ' ## ## ## ## ## ## ## ## ## ## ## ## ## ##');
log.info('App', ' ## # ## ## ## ## ## ## ## ## ## ## ####');
log.info('App', ' ####### ## ## ## ## ## ## ## ## ## ## ## ##');
log.info('App', ' ## ## ###### ###### ##### ##### #### #### ## ##');
log.info('App', '');
log.info('App', ' --- v' + packageData.version + ' ---');
log.info('App', '');
};
2017-03-06 05:45:50 +08:00
if (!config.processes || config.processes <= 1) {
printLogo();
if (config.ident) {
process.title = config.ident;
2017-03-06 05:45:50 +08:00
}
// single process mode, do not fork anything
require('./worker.js');
} else {
let cluster = require('cluster');
if (cluster.isMaster) {
printLogo();
if (config.ident) {
process.title = config.ident + ' master';
}
log.info('App', `Master [${process.pid}] is running`);
let forkWorker = () => {
let worker = cluster.fork();
log.info('App', `Forked worker ${worker.process.pid}`);
};
// Fork workers.
for (let i = 0; i < config.processes; i++) {
forkWorker();
2017-03-06 22:13:40 +08:00
}
cluster.on('exit', worker => {
log.info('App', `Worker ${worker.process.pid} died`);
setTimeout(forkWorker, 1000);
2017-03-06 05:45:50 +08:00
});
} else {
if (config.ident) {
process.title = config.ident + ' worker';
}
require('./worker.js');
}
}