关于cluster的一个问题
发布于 4 年前 作者 signiliance 3900 次浏览 来自 问答

本机环境: macos Intel® Core™ 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 回复

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

输出下req.url

回到顶部