我的问题很简单。但是,它可能需要回答不同的变量(我猜)
我正在使用node.js,我正在考虑如何在多核架构中使用它。
最新版本为多进程编程提供了child_process.fork()
和child.spawn()
方法。我已经阅读了关于将Node.js用作大型Comet服务器的this非常好(但已过时)的文章。现在,nodejs提供了多进程编程,我真的不知道应该为生成大量请求而生成多少进程(假设我的服务器只在一台机器上运行)。有没有办法选择'best'(或至少一个好的)子进程执行相同的工作?
非常感谢任何有关入门指南的链接。
谢谢
答案 0 :(得分:10)
Node.js官方文档中有一个如何使用集群的示例:
var cluster = require('cluster');
var http = require('http');
var numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
// Fork workers.
for (var i = 0; i < numCPUs; 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(8000);
}
正如您在上面的代码中所看到的,您应该使用与您拥有的cpu数量一样多的分支,以便所有内核同时工作(在处理器核心之间分配工作)。
答案 1 :(得分:5)
在Node.js示例中,他们希望每个核心仅运行一个进程。每个核心的工作人员数量没有技术限制,因此只要您的系统能够处理,您就可以尽可能多地运行。
但是,每个核心运行多个进程并不会提高应用程序的性能。
希望它有所帮助!