gpt4 book ai didi

使用集群的 Node.js 性能

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:38 25 4
gpt4 key购买 nike

我已经尝试解决这个问题有一段时间了。我在node中写了一个非常简单的http服务器来基准使用集群的效果。这是我的代码:

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

if(process.argv.length >= 3)
{
numCPUs = process.argv[2];
}

if (cluster.isMaster && numCPUs > 0) {
console.log("launching " + numCPUs + " procs");
// Fork workers.
for (var i = 0; i < numCPUs; i++) {
console.log("launching proc #" + i);
cluster.fork();
}

cluster.on('death', function(worker) {
console.log('worker ' + worker.pid + ' died');
});
} else {
// Worker processes have a http server.
http.Server(function(req, res) {
res.writeHead(200);
res.end("hello world\n");
}).listen(3000);
}

问题是我根本没有看到任何性能提升。 1 进程在大多数情况下具有更好的性能。而且,如果我添加更多工作,例如从 redis 或 mongo 检索数据,那么增加进程会有所帮助,但效果有限(大约 15%)。我已经在 i7 MBPr(四核 HT)和 i5(四核)Win7 系统上尝试过此操作,结果相同。

有人可以解释一下这段代码有什么问题吗?或者,为什么我没有看到使用集群的优点/好处?

最佳答案

您的测试似乎几乎纯粹是面向 I/O 的,在这种情况下,使用集群 几乎没有什么好处(如您所见),因为无论如何 I/O 都是并发的。

要看到显着的好处,您需要有部分代码受 CPU 限制,因为只有这样您才能在集群工作线程之间提供额外的并行性。

关于使用集群的 Node.js 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15038656/

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