forked from jifeng/node-app
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdispatch.js
52 lines (41 loc) · 1.19 KB
/
dispatch.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/*!
* dispath.js, dispatch app workers.
* Copyright(c) 2012
* Author: jifeng <[email protected]>
*/
/**
* Module dependencies.
*/
var util = require('util');
var path = require('path');
var config = require('./config');
if (config.enableCluster) {
var workerpath = path.join(__dirname, 'worker.js');
var cluster = require("cluster");
var restartTime = 5000;
cluster.setupMaster({
exec : workerpath
});
cluster.on('fork', function (worker) {
console.log('[%s] [worker:%d] new worker start', new Date(), worker.process.pid);
});
cluster.on('exit', function (worker, code, signal) {
var exitCode = worker.process.exitCode;
var err = new Error(util.format('worker %s died (code: %s, signal: %s)', worker.process.pid, exitCode, signal));
err.name = 'WorkerDiedError';
//报警
// restart
setTimeout(function () {
cluster.fork();
}, restartTime);
});
var numCPUs = require('os').cpus().length;
// Fork workers.
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
} else {
require('./worker');
}
console.log('[%s] [master:%d] Server started, listen at %d, cluster: %s',
new Date(), process.pid, config.port, config.enableCluster);