在生产中使用nodejs集群?

时间:2017-07-09 13:56:17

标签: node.js

我正在阅读nodejs集群以运行多个节点应用实例

    const cluster = require('cluster');
    const http = require('http');
    const numCPUs = require('os').cpus().length;

    if (cluster.isMaster) {
    console.log(`Master ${process.pid} is running`);
    for (let i = 0; i < numCPUs; i++) {
    cluster.fork();
     }
     cluster.on('exit', (worker, code, signal) => {
     console.log(`worker ${worker.process.pid} died`);
      });
     } 
    else {

     http.createServer((req, res) => {
     res.writeHead(200);
     res.end('hello world\n');
      }).listen(8000);

     console.log(`Worker ${process.pid} started`);
     }

在生产环境中使用这种方法很好。 请求数量更多

2 个答案:

答案 0 :(得分:1)

您可以使用pm2 / strongloop来管理它。因为所有这些模块都是生产就绪且非常容易管理。

我个人认为pm2很棒,可以管理节点进程。

使用以下链接了解有关pm2的更多信息 http://pm2.keymetrics.io/

答案 1 :(得分:0)

是的,只要您正在计算CPU长度,就可以使用cluster

const numCPUs = require('os').cpus().length;

for (let i = 0; i < numCPUs; i++) {
  cluster.fork();
}

集群创建的进程不会超过cpu长度

但是,如果群集管理不当,将会减慢整个应用程序的速度