首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >node.js如何保证每个工作者都在不同的cpu核心上?

node.js如何保证每个工作者都在不同的cpu核心上?
EN

Stack Overflow用户
提问于 2016-02-20 03:23:58
回答 1查看 228关注 0票数 0

在代码cluster.fork()中,node.js如何保证一个从core-1开始,第二个从core-2开始?

代码语言:javascript
复制
const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
  // Fork workers.
  for (var i = 0; i < numCPUs; i++) {
    // Whats happening here? numCPUs is just a length, no reference to any core
    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);
}

以及客户端请求如何在工作人员之间分配?

EN

回答 1

Stack Overflow用户

发布于 2016-02-20 04:06:23

Node不保证worker将在特定的cpu核心上运行。这些都是由操作系统处理和调度的。

Per the docs,客户端请求分为以下两种方式之一:

群集模块支持两种分配传入连接的方法。

第一种方法(也是除Windows之外的所有平台上的默认方法)是轮询方法,其中主进程侦听端口,接受新连接,并以循环方式在工作进程中分发它们,并使用一些内置的智能来避免工作进程过载。

第二种方法是主进程创建监听套接字并将其发送给感兴趣的工作进程。然后,工作进程直接接受传入的连接。

从理论上讲,第二种方法应该提供最佳性能。然而,在实践中,由于操作系统调度程序的反复无常,分布往往非常不平衡。已经观察到负载,其中超过70%的所有连接在总共八个进程中的两个进程中结束。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35513351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档