2017-05-18 2 views
0

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.

+0

eine absolute Antwort ist es nicht möglich. es hängt von Ihrem Code, bitte fügen Sie Ihren Code zu dieser Frage –

+0

das Skript ist auf dem Github Repo in der Frage. –

Antwort

0

Ich versuche, die Planungsrichtlinie setzen auf Cluster-Skript

cluster.schedulingPolicy = cluster.SCHED_NONE 

Jetzt Cluster Skript ständig das Skript nicht-Cluster übertrifft SCHED_NONE. yeeah

+0

Wenn Sie auf Windows sind, scheint es, dass es einige Probleme mit dem Standardwert, https://nodejs.org/api/cluster.html#cluster_cluster_splaningpolicy gibt –

Verwandte Themen