711 Stimmen

Node.js auf Multi-Core-Maschinen

Node.js sieht interessant aus, BUT Ich muss etwas übersehen haben - ist Node.js nicht darauf abgestimmt, nur auf einem einzigen Prozess und Thread zu laufen?

Wie skaliert es dann für Multi-Core-CPUs und Multi-CPU-Server? Schließlich ist es großartig, einen möglichst schnellen Single-Thread-Server zu bauen, aber für hohe Lasten würde ich mehrere CPUs verwenden wollen. Und das Gleiche gilt für die Beschleunigung von Anwendungen - anscheinend werden heute mehrere CPUs verwendet und die Aufgaben parallelisiert.

Wie passt Node.js in dieses Bild? Ist es die Idee, mehrere Instanzen irgendwie zu verteilen oder was?

4 Stimmen

Es sieht so aus, als ob Ryah anfängt, sich ernsthaft mit der eingebauten Multi-Core-Unterstützung in Node zu beschäftigen: github.com/joyent/node/commit/

3 Stimmen

Der PM2-Prozessmanager verwendet intern das Clustermodul, um Ihre NodeJS-Anwendungen auf alle verfügbaren Kerne zu verteilen: github.com/Unitech/pm2

1 Stimmen

@broofa, Das sind keine echten Threads und Kindprozesse haben keinen gemeinsamen Speicher. Siehe auch Was ist das Nodejs-Equivalent zu Javas echtem Threading und flüchtigen statischen Variablen? .

7voto

TheDeveloper Punkte 402

Spark2 basiert auf Spark, das inzwischen nicht mehr weiterentwickelt wird. Cluster ist sein Nachfolger und verfügt über einige coole Funktionen, wie z. B. das Erzeugen eines Worker-Prozesses pro CPU-Kern und das Wiederauftauchen toter Worker.

7voto

Someone Special Punkte 9733

WICHTIGER UNTERSCHIED - ROLLENDER NEUSTART

Ich muss noch eine wichtiger Unterschied zwischen der Verwendung von Node's Build im Clustermodus und einem Prozessmanager wie dem Clustermodus von PM2.

PM2 ermöglicht das Nachladen ohne Ausfallzeit, wenn Sie im Laufen sind.

pm2 start app.js -i 2 --wait-ready

Fügen Sie in Ihrem Code Folgendes hinzu

process.send('ready');

Wenn Sie anrufen pm2 reload app nach Code-Aktualisierungen wird PM2 neu geladen die erste Instanz der Anwendung neu, wartet auf den 'ready'-Aufruf und fährt dann fort um die nächste Instanz neu zu laden. So wird sichergestellt, dass Sie immer eine aktive Anwendung haben, um auf Anfragen zu reagieren.

Bei der Verwendung von Nodejs-Clustern kommt es zu Ausfallzeiten beim Neustart und beim Warten auf die Bereitschaft des Servers, da es nur eine Instanz der Anwendung gibt und Sie alle Kerne zusammen neu starten.

6voto

christkv Punkte 4250

Ich benutze Knotenarbeiter um Prozesse auf einfache Weise von meinem Hauptprozess aus zu starten. Scheint gut zu funktionieren, während wir darauf warten, dass der offizielle Weg zustande kommt.

5voto

Roy Punkte 273

Das neue Kind auf dem Block hier ist LearnBoost's "Auf" .

Es bietet "Zero-Downtime-Reloads" und erstellt zusätzlich mehrere Worker (standardmäßig die Anzahl der CPUs, aber es ist konfigurierbar), um das Beste aus allen Welten zu bieten.

Es ist neu, aber es scheint ziemlich stabil zu sein, und ich verwende es mit Freude in einem meiner aktuellen Projekte.

2voto

Yunat Amos Punkte 25

Ich habe für Clusterize eine App für alle verfügbaren CPU-Kerne gesucht und bin hier fündig geworden. Wo ich dieses Schlüsselwort gefunden habe ist der Pm2 Befehl

pm2-Beispiele

Das habe ich gefunden

  • Clustern Sie eine Anwendung auf alle verfügbaren CPU-Kerne:

    $ pm2 start -i max

Wenn Sie pm2 installieren müssen, verwenden Sie diese Befehle

npm install -g pm2

yan add -g pm2

o

Benutzen Sie diesen Link Hier

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X