CNode

关于cluster的一个问题

问答
Ssigniliance发布于7 年前最后回复7 年前2 回复4529 浏览0 收藏

本机环境: macos Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz 6核心 12线程 node版本: 8.11.3 执行如下代码:

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 服务器。
  // cp.fork('./5.js')
  http.createServer((req, res) => {
    // process.stdout.write(`${process.pid}正在处理数据`)
    console.log(process.pid, '正在处理数据')
    res.writeHead(200);
    res.end('你好世界\n');
  }).listen(8000);
  console.log(`工作进程 ${process.pid} 已启动`);
}

执行结果: 主进程 81458 正在运行 工作进程 81460 已启动 工作进程 81462 已启动 工作进程 81461 已启动 工作进程 81463 已启动 工作进程 81464 已启动 工作进程 81466 已启动 工作进程 81465 已启动 工作进程 81467 已启动 工作进程 81469 已启动 工作进程 81468 已启动 工作进程 81470 已启动 工作进程 81471 已启动

// 访问了一次接口之后

81460 '正在处理数据' 81460 '正在处理数据'

想问一下为什么会打印了两次log

查看回复

回复 (2)

J
jiangli373#1·7 年前

看下是不是有一个favicon.ico这个请求

T
ty4z2008#2·7 年前

输出下req.url

参与回复
登录后即可参与回复。登录