亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

節點js ECONNRESET

節點js ECONNRESET

精慕HU 2019-06-28 16:32:41
節點js ECONNRESET我正在使用Socket.IO運行一個Express js應用程序進行聊天,并在24小時內隨機獲得以下錯誤5次。節點進程將永遠包裝,并立即重新啟動。問題是重新啟動特快會把我的用戶趕出他們的房間,而沒有人想那樣做。Web服務器由HAProxy代理。不存在套接字穩定性問題,只需使用WebSocket和閃存套接字傳輸。我不能故意復制這個。這是節點v0.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: 8error: Forever restarting script for 2 time同時添加了Socket.IO客戶端錯誤處理程序和未處理異常處理程序。似乎這個人捕捉到了錯誤:process.on('uncaughtException', function (err) {   console.error(err.stack);   console.log("Node NOT Exiting...");});因此,我懷疑這不是Socket.IO問題,而是我對另一個服務器的http請求,或者MySQL/redis連接。問題是錯誤堆棧不能幫助我識別我的代碼問題。下面是日志輸出:Error: read ECONNRESET     at errnoException (net.js:900:11)     at TCP.onread (net.js:555:19)我怎么知道是什么原因造成的?如何從錯誤中獲得更多信息?好的,不是很詳細,但是下面是帶有“Longjohn”的堆棧跟蹤: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] ] } }這是原因嗎?
查看完整描述

3 回答

?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

我也遇到了一個類似的問題,在Node升級之后,應用程序開始出錯。我相信這可以追溯到NodeRelationv0.9.10這個項目:

  • NET:不要壓制ECONNRESET(Ben Noordhuis)

以前的版本不會在客戶機中斷時出錯。來自客戶端的連接中斷將在Node中引發錯誤ECONNRESET。我相信這是針對Node的功能,所以修復(至少對我來說)是處理錯誤,我相信您是在默認的異常情況下這樣做的。盡管我在net.Socket處理程序中處理它。

你可以證明這一點:

創建一個簡單的套接字服務器,并獲得Nodev0.9.9和v0.9.10。

require('net')
    .createServer( function(socket) 
    {
           // no nothing
    })
    .listen(21, function()
     {
           console.log('Socket ON')
    })

使用v0.9.9啟動它,然后嘗試將FTP發送到此服務器。我使用FTP和端口21只是因為我在Windows上,并且有一個FTP客戶端,但是沒有telnet客戶機在手邊。

然后從客戶端斷開連接。(我只是在做Ctrl-C)

使用Nodev0.9.9時不會出現錯誤,使用Nodev.0.9.10和更高版本時也不會出現錯誤。

在生產中,我使用的是0.10。但它仍然會給出錯誤。同樣,我認為這是有意的,解決方案是處理代碼中的錯誤。


查看完整回答
反對 回復 2019-06-28
  • 3 回答
  • 0 關注
  • 1142 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號