阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      Node.js cluster 集群

      Node.js cluster 集群

      单个 Node.js 实例运行在单个线程中。 为了充分利用多核系统,有时需要启用一组 Node.js 进程去处理负载任务。

      cluster 模块可以创建共享服务器端口的子进程。

      const cluster = require('cluster');
      const http = require('http');
      const numCPUs = require('os').cpus().length;
      
      if (cluster.isMaster) {
        console.log(`主进程 ${process.pid} 正在运行`);
      
        // 衍生工作进程。
        for (let i = 0; i < numCPUs; i++) {
          cluster.fork();
        }
      
        cluster.on('exit', (worker, code, signal) => {
          console.log(`工作进程 ${worker.process.pid} 已退出`);
        });
      } else {
        // 工作进程可以共享任何 TCP 连接。
        // 在本例子中,共享的是 HTTP 服务器。
        http.createServer((req, res) => {
          res.writeHead(200);
          res.end('你好世界\n');
        }).listen(8000);
      
        console.log(`工作进程 ${process.pid} 已启动`);
      }
      

      运行代码,则工作进程会共享 8000 端口:

      $ node server.js
      主进程 3596 正在运行
      工作进程 4324 已启动
      工作进程 4520 已启动
      工作进程 6056 已启动
      工作进程 5644 已启动
      
      目录
      本文目录
      目录