这个NodeJS集群主可以崩溃吗?

我们一直在使用我们的快速应用程序,它使用cluster来产生完成所有工作的工作人员。 这意味着主人只运行这个代码:

 if (cluster.isMaster) { // ... // ... check arguments and do some initial prep // ... // Create a worker for each CPU for (var i = 0; i < cpuCount; i += 1) { cluster.fork(); } // Listen for dying workers cluster.on('exit', function (worker) { if (!worker.suicide) { // Replace the dead worker if not a startup error like port in use. console.log('Worker ' + worker.id + ' died. Replacing it.'); cluster.fork(); } }); return; } 

鉴于师傅没有做任何事情,有没有必要forever “保护”它, supervisor等? 有没有什么情况下,主人可能会崩溃,有自动重新启动的价值?

在我看来,没有必要监视你的集群中的主进程,因为你将无法处理SIGKILL

参考下面的 PM2 实现 ,其实是master

 var cluster = require('cluster'); var http = require('http'); var os = require('os'); var numCPUs = os.cpus().length; if (cluster.isMaster) { // Master: // Let's fork as many workers as you have CPU cores for (var i = 0; i < numCPUs; ++i) { cluster.fork(); } } else { // Worker: // Let's spawn a HTTP server // (Workers can share any TCP connection. // In this case its a HTTP server) http.createServer(function(req, res) { res.writeHead(200); res.end("hello world"); }).listen(8080); }