-3

Ja hallo. Ich habe kürzlich erfahren, dass Node.js single-threaded ist. Ich möchte meine Anwendung verwenden, schneller (MongoDB/Express app) so habe ich das folgende Skript geschrieben (ich will es 8 Prozessoren verwenden)Start Node.js Thread Pool für Parallelität

#!/bin/bash 
node app.js & 
node app.js & 
node app.js & 
node app.js & 
node app.js & 
node app.js & 
node app.js & 
node app.js & 

Wenn ich versuche, um das Skript auszuführen, habe ich viele Fehler zu bekommen Ports verwendet, aber ich weiß, dass TCP 65536 Ports erlaubt und es sollte nur versuchen, 8 zu verwenden. Muss ich meine Node.js auf eine neue Version aktualisieren?

Ich bin auf Amazon Linux ausgeführt.

Vielen Dank.

+0

Sie haben es wahrscheinlich so konfiguriert, dass immer derselbe Port verwendet wird. –

+4

Verwenden Sie das 'cluster'-Modul node.js, um N Prozesse für alle Anfragen auf demselben Port zu starten. Hinweis: Wenn Ihre App mit ordnungsgemäßem asynchronen E/A-Zugriff geschrieben wurde und Sie an eine Datenbank gebunden sind (z. B. wenn die Antwortzeiten durch die Datenbank eingeschränkt werden), hilft das möglicherweise nicht viel, weitere Prozesse zu starten. Node.js kann single-threaded sein, aber Ihre Datenbank ist wahrscheinlich ein eigener Prozess, und node.js kann viele Anfragen gleichzeitig mit ordnungsgemäßer asynchronen E/A-Kodierung verarbeiten. – jfriend00

Antwort

4

Jeder der Prozesse versucht, auf dem gleichen Port zu hören. Sie sollten das integrierte Cluster-Modul von Node verwenden, um die untergeordneten Prozesse für Sie zu erstellen, da dies die gemeinsame Nutzung eines einzelnen Ports für alle untergeordneten Elemente ermöglicht.