SORU
21 HAZİRAN 2013, Cuma


Düğüm js ECONNRESET

Ben m soket ile İfade js bir uygulamayı çalıştırmak.sohbet için ıo ve aşağıdaki hata rastgele 5 kez anladım sırasında web 24. Düğüm süreci yeniden başlar ve sonsuza kadar sarılı. kendisi hemen.

Sorun yeniden açık oda benim kullanıcılarının başladı. ve bunu hiç kimse istemez.

Web server HAProxy vekalet tarafından. Soket istikrar sorunları, sadece kullanarak websockets ve flashsockets taşımaları vardır. Bunu bilerek sunamayacağı.

Bu düğüm v0 ile hatadır.10.11:

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: read ECONNRESET     //alternatively it s a 'write'
    at errnoException (net.js:900:11)
    at TCP.onread (net.js:555:19)
error: Forever detected script exited with code: 8
error: Forever restarting script for 2 time

DÜZENLE (2013-07-22)

Eklenen her iki yuva.ıo istemci hata işleyicisi ve yakalanmayan istisna işleyicisi. Bu bir hata yakalar gibi görünüyor:

process.on('uncaughtException', function (err) {
  console.error(err.stack);
  console.log("Node NOT Exiting...");
});

Bir yuva değil sanıyorum.ıo ama bir http yaptığım başka bir server ya da mysql/redis bağlantı sorunu isteği. Sorun hata yığını bana benim kod sorunu tanımlamak yardımcı olmuyor. Burada günlük çıkış:

Error: read ECONNRESET
    at errnoException (net.js:900:11)
    at TCP.onread (net.js:555:19)

Bu nasıl olur biliyor musunuz? Nasıl daha fazla hata kurtulabilirim?

Tamam, çok ayrıntılı değil ama stacktrace s"":. longjohn burada

Exception caught: Error ECONNRESET
{ [Error: read ECONNRESET]
  code: 'ECONNRESET',
  errno: 'ECONNRESET',
  syscall: 'read',
  __cached_trace__:
   [ { receiver: [Object],
       fun: [Function: errnoException],
       pos: 22930 },
     { receiver: [Object], fun: [Function: onread], pos: 14545 },
     {},
     { receiver: [Object],
       fun: [Function: fireErrorCallbacks],
       pos: 11672 },
     { receiver: [Object], fun: [Function], pos: 12329 },
     { receiver: [Object], fun: [Function: onread], pos: 14536 } ],
  __previous__:
   { [Error]
     id: 1061835,
     location: 'fireErrorCallbacks (net.js:439)',
     __location__: 'process.nextTick',
     __previous__: null,
     __trace_count__: 1,
     __cached_trace__: [ [Object], [Object], [Object] ] } }

Burada flash soket ilke dosyası hizmet ediyorum:

net = require("net")
net.createServer( (socket) =>
  socket.write("<?xml version=\"1.0\"?>\n")
  socket.write("<!DOCTYPE cross-domain-policy SYSTEM \"http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd\">\n")
  socket.write("<cross-domain-policy>\n")
  socket.write("<allow-access-from domain=\"*\" to-ports=\"*\"/>\n")
  socket.write("</cross-domain-policy>\n")
  socket.end()
).listen(843)

Bu neden olabilir?

CEVAP
14 Temmuz 2013, Pazar


Bunu zaten tahmin: bağlantı hatası.

"" . ECONNRESET demek TCP konuşmanın diğer tarafı aniden kapandı bağlantının sonu. Bu büyük olasılıkla bir veya daha fazla uygulama protokolü hatalardan kaynaklanmaktadır. Eğer bir şey hakkında şikayet olmadığını görmek için günlükleri server API bakabilirsin.

Ya da bir hata için kontrol edin ve potansiyel olarak sorun hata ayıklama için arıyor beri, bir göz atmalısınız"How to debug a socket hang up error in NodeJS?"benzer bir soruya ilişkin olarak stackoverflow ' da yayınlanmıştır.

Gelişim için hızlı ve kirli bir çözüm:

longjohn, uzun zaman uyumsuz işlemleri içeren yığın izlemelerini olsun kullanın.

Temiz ve doğru çözüm: Teknik olarak, you emit an 'error' event and no one listens to it, it will throw her düğüm. Atmak değil yapmak için, bir dinleyici koymak ve kendi başına hallet. Bu şekilde daha fazla bilgi ile hata günlüğü.

Aramalar bir grup için bir dinleyicisi var domains kullanmak ve aynı zamanda diğer çalışma zamanı hataları yakalamak. Emin olun her zaman uyumsuz işlem ile ilgili http(Server/Client) farklı domain bağlam karşılaştırma için diğer parça kodu, etki alanı otomatik olarak dinleme error olaylar ve yaymak için kendi işleyicisi. Bu yüzden yalnızca işleyicisi dinle ve hata veri. You also get more information for free.

DÜZENLE (2013-07-22)

Yukarıda yazdığım gibi:

"" . ECONNRESET demek TCP konuşmanın diğer tarafı aniden kapandı bağlantının sonu. Bu büyük olasılıkla bir veya daha fazla uygulama protokolü hatalardan kaynaklanmaktadır. Eğer bir şey hakkında şikayet olmadığını görmek için günlükleri server API bakabilirsin.

Ne de hali olabilir: rasgele zamanlarda, diğer taraftan aşırı ve sadece bir sonucu olarak bağlantı öldürür. Eğer durum buysa, bağlandığınız ne tam olarak... bağlıdır

Ama kesin olan bir şey var: Eğer gerçekten bir istisna neden olan TCP bağlantısı üzerinde okuma hatası var. Hata koduna bakarak bunu doğruluyor hangi Düzenleme yayınlanmıştır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Randall P Studios

    Randall P St

    27 AĞUSTOS 2009
  • ShayLoss

    ShayLoss

    5 Kasım 2009
  • The Computer Chronicles

    The Computer

    7 Kasım 2012