Ich habe einen Knotenserver (0.6.6), auf dem eine Express-Anwendung zusammen mit Mongoose und s3 auf einem Ubuntu 11.04-Computer ausgeführt wird.
Mehrmals pro Stunde hängt der Server. Das bedeutet, dass die Anwendung einwandfrei funktioniert, ich sehe die Express-Protokollierungen und plötzlich reagiert der Server nicht mehr. Keine Fehler, keine Traces, keine Protokollierungen, und seltsamerweise zeigt der Browser die Anforderung auch im Netzwerk-Debugging-Fenster nicht an. Von jedem Computer im lokalen Netzwerk ist es dasselbe Verhalten. Ich starte den Server neu und es ist wieder in Ordnung für einige Minuten, dann beginnt es wieder zu hängen, jedes Mal, wenn ich etwas anderes mache.
Dieselbe Anwendung auf Amazon unter derselben Ubuntu-Version funktioniert einwandfrei und hängt nie.
Ich weiß, dass das alles irgendwie vage ist, aber ich weiß nicht, wo ich anfangen soll. Hat jemand von euch so etwas schon einmal gesehen? Irgendeine Idee?
Antworten:
Es gibt also zwei Ursachen, von denen ich herausgefunden habe, dass beide das beschriebene Verhalten sogar für sich selbst verursachen können.
Weiterleitung an einen Protokollprozess. In meinem Upstart-Skript hatte ich eine Zeile, die besagte,
exec su nodejs node /home/nodejs/server.js | /home/nodejs/logger.js
dass der Upstart-Daemon den Protokollierungsprozess anstelle des Servers überwachen würde. Somit würde ein abstürzender Server unbemerkt bleiben und blockiert zu sein scheinen. (stattdessen könnte man <<< verwenden, um von rechts nach links zu pfeifen)process.on('uncaughtException', ...)
kann die A-Node-App hängen lassen. Ich denke, eines der Module, die ich verwendet habe, hatte einen Debug-Modus, der dieses Ereignis aktiviert hat.quelle