2013-06-05 7 views
7

W moim node.js app, który wykorzystuje moduł klastra, mam sporadycznie widząc błędy tak:debugowania bezpański przechwycone wyjątki (ECONNRESET) w klastrze węzłów

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

To obniża moją całą aplikację, a do tej pory jedynym sposobem, w jaki mogłem sobie z nimi poradzić, było związanie process.on('uncaughtException'). Chciałbym znaleźć przyczynę, ale powyższy ślad stosu jest całkiem bezużyteczny.

Czy jest jakiś sposób, aby dowiedzieć się, co powoduje te wyjątki?

Muszę zauważyć, że widzę je tylko w klastrze, a nie w robotnikach, co prowadzi mnie do podejrzeń, że mają one coś wspólnego ze sposobem, w jaki moduły klastrów magicznie dzielą się z pracownikami.

+0

możliwe duplikat [Jak debugować gniazdo powiesić błąd w NodeJS?] (http://stackoverflow.com/questions/10814481/how-to-debug-a-socket-hang-up-error-in-nodejs) –

Odpowiedz

0

Wygląda na to, że domyślnie włączono opcję wyraźnego podtrzymywania połączenia. Aby zamknąć połączenie po reakcji można dodawać res.set("Connection", "close");

Ewentualnie można dodać middleware w swojej aplikacji, aby zamknąć połączenie po każdej odpowiedzi:

app.use(function(req, res, next) { 
     res.set("Connection", "close"); 
     next(); 
    }); 
Powiązane problemy