Viele Leute sagten, Cluster-Modul macht node.js App schneller als normale. Aber was ich hier erlebt habe, ist irgendwie verwirrend. Ich erstelle zwei Skripte, zuerst ist der regelmäßige http-Server ohne Cluster-Modul zu verwenden. Zweites Skript ist http-Server mit Cluster-Modul.Warum die Non-Cluster-App die Cluster-App in Nodejs übertrifft?
Ich verwende Apache-Benchmark, um hohe Anforderungen an diese Server zu senden. Und hier sind die Ergebnisse:
Attempt#1:
non-cluster: 15,418 req/sec
cluster: 10,333 req/sec
Attempt#2:
non-cluster: 12,563 req/sec
cluster: 9,874 req/sec
Wie kann Non-Cluster-Skript Cluster-Skript übertreffen?
Hier ist die github repo für die Skripte.
Nicht-Cluster-Skript:
const http = require('http');
const server = http.createServer((req, res) => {
res.end('Hello World!');
});
server.listen(process.env.SERVER_PORT,() => {
console.log('Server started on port ' + process.env.SERVER_PORT);
});
Cluster-Skript:
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();
}
cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
});
} else {
// Workers can share any TCP connection
// In this case it is an HTTP server
http.createServer((req, res) => {
res.writeHead(200);
res.end('Hello World!');
}).listen(process.env.SERVER_PORT);
console.log(`Worker ${process.pid} started`);
}
Meine Knoten Version 7.10 auf Ubuntu 16.04.
eine absolute Antwort ist es nicht möglich. es hängt von Ihrem Code, bitte fügen Sie Ihren Code zu dieser Frage –
das Skript ist auf dem Github Repo in der Frage. –