wildlife

node.js – Probleme mit cluster modul unter Ubuntu

von Torsten Feld // May 4th, 2013 // IT, Node.js, PHP / Javascript //

Vor ca. einer Woche habe ich angefangen mit Node.js zu arbeiten. Grund hierfür ist, dass ich für das eine oder andere Projekt Daten in Echtzeit übertragen möchte. Da die Datenübertragung, wie z.B. bei PHP bzw. Web 2.0 Projekten, nicht nur vom Client aus initiiert werden sondern der Server diese beim Aktualisieren der Datensätze zum Client pushen soll, bin ich auf Socket.io gestoßen. Hier wird u.a. eine eigene Websocket-Implementierung verwendet, welche bidirektionale Kommunikation zwischen Server / Backend und Client ermöglicht. Dies funktioniert sogar mit nahezu allen Browsern, da auf ältere / alternative Tranport-Mechanismen, wie z.B. gewöhnliche Websockets, flashsocket, jsonp-polling, etc., automatisch ausgewichen wird.

Da diese Projekte voraussichtlich größer und somit eine vermeintlich hohe Anzahl an parallelen Socket-Verbindungen bedienen müssen, habe ich mir das Cluster-Modul von Node.js angeschaut und in meine Projekte implementiert. Unter Windows, für welches eine entsprechende Portierung vorliegt, lief meine app.js Problemlos. Nach dem Deploy auf ein Staging-System, konnte die app.js nicht mehr gestartet werden, da "cluster.worker" scheinbar nicht mehr definiert war. Auch Versuche mit anderen Cluster-Modulen schlugen fehl.

Nachdem ich die Modul-Versionen unter Windows und Linux verglichen habe und keine Unterschiede feststellen konnte, habe ich im #node.js Channel im Freenode-IRC Hilfe gesucht. Nachdem sich einige den Code angeschaut haben (vielen Dank insbesondere an geNAZt (Google+ / Twitter), jedoch auch keine gravierenden Fehler gefunden haben, bin ich vorhin auf den Fehler gest0ßen:

Während ich unter Windows mittels dem, auf der Website bereitgestellten Installer, die neueste Version (0.10.5) von Node.js installiert habe, war auf dem Ubuntu noch eine Uralt-Version installiert. Dies liegt daran, dass in den normalen APT-Repositories lediglich das Paket nodejs-dev in der Version 0.6.12 vorhanden ist, welche nicht das neueste Cluster-Modul beinhaltet. Um die neueste Version zu erhalten, müssen zuerst folgende Schritte ausgeführt werden:

  • python-software-properties ist für den Befehl add-apt-repository erforderlich und ist scheinbar standardmäßig nicht installiert
  • anschließend wird das Repository ppa:chris-lea/node.js hinzugefügt und
  • ein Update der Repositories durchgeführt
  • zuletzt installiert man dann das Paket nodejs, welches nun in der neuesten Version (0.10.5) vorliegt.

2013-05-04_15-25-25

Nach dem Starten der App und dem Aufbau einer Socket-Verbindung vom Client / Browser, wird nun die ID des entsprechenden Workers korrekt angezeigt.

Series Navigation

Dynamisches Setzen von NODE_ENV für Produktions- bzw. Entwicklungsumgebung mit Node.js >>


One Response to “node.js – Probleme mit cluster modul unter Ubuntu”

  1. [...] auch produktiv läuft, um Betriebssystem-abhängige Fehler auszuschließen (siehe z.B. diesen Beitrag). Würde ich also auf diesem System für die Umgebungsvariable NODE_ENV auf 'production' [...]

Leave a Reply