1unitedpower: Node.js + socket.io, Cluster / Multithreading

Beitrag lesen

problematische Seite

Tipp ins Blaue: Deine Umgebungsvariablen werden nicht an die Kind-Prozesse weitergegeben, deswegen lauschen die Http-Server auf den Port 1337 und nicht auf process.env.PORT. Lösen könntest du das, indem du beim Forken die Umgebungsvariablen manuell durchreichst: cluster.fork(process.env).

Kann man das irgendwie verhindern, beziehungsweise user so Global setzen, dass jeder thread darauf zugreifen kann?

Jein, Threads haben in der Regel einen gemeinsamen Speicherbereich, aber cluster.fork erzeugt ganz neue Prozesse, die haben völlig getrennte Speicherbereiche. Du könntest aber die Arbeit die im User-Modul stattfindet nur im Master-Prozess erledigen lassen, und die Worker über die Ergebnisse per worker.send informieren. Das ist aber ganz schönes Gefrickel und du verlierst einige Vorteile der Parallelisierung, weil die Synchronisations-Punkte zwischen deinen Prozessen einbaust.