2013-06-05 8 views
7

In meiner node.js App, die das Cluster-Modul verwendet, bin ich zeitweise Fehler so zu sehen:Debuggen Streu abgefangene Ausnahmen (ECONNRESET) in einem Knoten-Cluster

events.js:71 
     throw er; // Unhandled 'error' event 
      ^
Error: read ECONNRESET 
    at errnoException (net.js:863:11) 
    at TCP.onread (net.js:524:19) 

Dies bringt nach unten meiner ganzen app, und Bisher war die einzige Möglichkeit, mit denen ich umgehen konnte, die Bindung eines process.on('uncaughtException'). Ich würde gerne die zugrunde liegende Ursache herausfinden, aber die obige Stapelverfolgung ist ziemlich nutzlos.

Gibt es eine Möglichkeit herauszufinden, was diese Ausnahmen verursacht?

Ich sollte beachten, dass ich diese nur im Cluster-Master sehe, nicht die Arbeiter, was mich vermuten lässt, dass sie etwas damit zu tun haben, wie die Cluster-Module ihre Magie bei der Verteilung von Verbindungen zu Arbeitern haben.

+0

möglich Duplikat [Wie ein Socket debuggen aufzuhängen Fehler in NodeJS?] (http://stackoverflow.com/questions/10814481/how-to-debug-a-socket-hang-up-error-in-nodejs) –

Antwort

1

Diese Antwort war hilfreich: https://stackoverflow.com/a/11542134/233370

Grundsätzlich habe ich installiert longjohn und war dann in der Lage, das volle Asynchron-Stack-Trace zu erhalten, die zugrunde liegende Ursache (rabbit.js in meinem Fall), um herauszufinden.

0

Es scheint, dass express keep-alive standardmäßig aktiviert ist. Um Verbindung nach Antwort schließen Sie res.set("Connection", "close");

Alternativ hinzufügen können Sie eine Middleware in Ihrer Anwendung hinzufügen können Verbindung nach jeder Antwort zu schließen:

app.use(function(req, res, next) { 
     res.set("Connection", "close"); 
     next(); 
    }); 
Verwandte Themen