Nodejs集群没有列出

这是从nodejs api复制的:

我想要做的是在master中做后台工作,并在worker中接受http请求。

如果我注释掉后台工作部分,那么效果很好。

const cluster = require('cluster'); const http = require('http'); const numCPUs = require('os').cpus().length; const sleep = require('sleep'); if (cluster.isMaster) { console.log(`Master ${process.pid} is running`); // Fork workers. for (let i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on('exit', (worker, code, signal) => { console.log(`worker ${worker.process.pid} died`); }); // background jobs start while(true) { console.log(123) sleep.sleep(1) // do_background_jobs() } // background jobs end } else { // Workers can share any TCP connection // In this case it is an HTTP server http.createServer((req, res) => { res.writeHead(200); res.end('hello world\n'); }).listen(8000); console.log(`Worker ${process.pid} started`); } 

这里是日志:

 Master 45476 is running Worker 45479 started Worker 45483 started Worker 45482 started Worker 45478 started 

netstat显示8000已closures。 curl失败。

你的while循环阻塞了“ 事件循环 ”,因此在主进程中什么都不会发生。 你应该把你的while循环转换成这个代码来防止阻塞IO。

 setInterval(() => { console.log("123") }, 1000)