【发布时间】:2015-12-19 01:57:11
【问题描述】:
Node.js 最新版本(4.2.3)现在支持多线程吗?很难找到有用的答案,因为大多数相关讨论都是几年前的。
node.js 云服务器如何处理 node.js Web App 请求?假设一个 2-Core 服务器运行一个 node.js 应用程序,这是否意味着无论流量有多大,它们都通过一个内核,而另一个内核总是空闲?
如果答案是肯定的,是否有一些第三方库的建议可能会为 node.js Web 应用程序实现多线程?
感谢您的帮助。除了上面的问题。我将集群代码采用到 Express.js Web 应用程序中,结果发现在下面的代码部分中没有执行 else 块。 var app = require('../app'); var debug = require('debug')('NewExpress:server'); var http = require('http'); 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 {
/**
* Get port from environment and store in Express.
*/
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
/**
* Create HTTP server.
*/
var server = http.createServer(app);
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
}
任何想法我应该如何在这里实现集群?
【问题讨论】:
-
Clusters。关于多线程,Node.js 不太适合简单的“是或否”。它一直使用多个线程。然而,它只使用其中之一与 v8 引擎来执行 JavaScript 代码。本机扩展可以利用其他线程来执行大量异步 I/O。