gpt4 book ai didi

node.js - 集群模式下 node.js 进程的最大数量

转载 作者:IT老高 更新时间:2023-10-28 22:04:41 28 4
gpt4 key购买 nike

为什么 node.js 中的所有集群模式示例都 fork 为等于 CPU 数量的进程数?

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

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

cluster.on('exit', function(worker, code, signal) {
console.log('worker ' + worker.process.pid + ' died');
});
} else {
// worker process
// do the job....
}

是否可以 fork 到更多的进程?我已经在 core-4 上用 10 个进程尝试了这段代码,它似乎正在工作。但是- 这是个好主意吗?

最佳答案

fork 数量等于 CPU 内核数量的原因是因为这是最优数量。增加它超过这个值,会降低性能,原因是如果你的处理器有 N 个内核,它只能同时处理 N 个进程。

例如:如果您有 4 个内核,并且您有 10 个进程,其中每个进程至少有 1 个线程,那么您的 CPU 可以同时执行这些线程中的 4 个。其余线程将等待轮到它们被处理器执行。然后,您的操作系统将间歇性地执行 context switch ,从而暂停正在运行的线程,并切换到正在等待的线程,并改为执行该线程。这种“切换”过程会导致额外的处理开销。因此,为了最有效地利用 CPU 周期,您希望 fork (进程)的数量与内核数量相匹配,以最大限度地减少上下文切换。

关于node.js - 集群模式下 node.js 进程的最大数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28108504/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com