2

类似的问题也有人问过,为什么 nodejs 集群分叉只委托给 Windows 机器上的一个工作人员。我们知道答案是 RR 算法在 Windows 上被禁用,但是那么,你怎么能启用它呢?

我有一个提示:

1) https://stackoverflow.com/a/43971478/8804567

文档说“ cluster.schedulingPolicy 也可以通过 NODE_CLUSTER_SCHED_POLICY 环境变量设置。有效值为'rr'和'none'”

我想知道我到底在哪里做这个配置。编码:

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

if (cluster.isMaster) {
  console.log(`Master ${process.pid} is running`);

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

} else {
  // Workers sharing same TCP connection

  http.createServer((req, res) => {
    console.log(`worker ${process.pid} working`);
    res.writeHead(200);
    res.end('hello world\n');
  }).listen(2019);

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

非常感谢任何相关的帮助、指导或评论,认真的!

感谢社区!

4

1 回答 1

2

好的,所以它就在我的脸上,但我对如何做到这一点感到困惑。

我添加了这行代码,现在当我运行它并对其进行负载测试时,我可以看到一个正确的委托。

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

cluster.schedulingPolicy = cluster.SCHED_RR;
...
于 2019-07-14T00:15:11.000 回答