使用egg.js时,老是发生errno:"ECONNRESET"的错误,请问各位有建议吗?
2019-10-21 10:35:53,528 ERROR 14496 nodejs.ECONNRESETError: read ECONNRESET (uncaughtException throw 1 times on pid:14496) at TCP.onStreamRead (internal/stream_base_commons.js:167:27) errno: "ECONNRESET" code: "ECONNRESET" syscall: "read" name: "ECONNRESETError" pid: 14496 hostname: solomon001
我上网找到的信息指出: https://blog.csdn.net/weixin_33834910/article/details/85830742 问题原因 出现该问题的原因是:Node.js提供的HttpServer默认设置了超时时间为2分钟,当一个请求的处理时间超过2分钟,HttpServer会自动将该请求的socket关闭掉,于是客户端便收到了 ECONNRESET 的错误信息了。可以参考Node.js的源码。
因此我在egg.js的config\config.default.js里加入一个配置 config.serverTimeout = 0;
然後持续观察,看看网友们有没有啥经验可以给我建议,谢谢
/////////////////////////////改完後,又發生了!///////////////////////////////// [Mon Oct 21 2019 13:38:05 GMT+0800 (GMT+08:00)] [graceful:worker:15220:uncaughtException] throw error 2 times { ECONNRESETError: read ECONNRESET (uncaughtException throw 2 times on pid:15220) at TCP.onStreamRead (internal/stream_base_commons.js:167:27) errno: 'ECONNRESET', code: 'ECONNRESET', syscall: 'read', name: 'ECONNRESETError' } ECONNRESETError: read ECONNRESET (uncaughtException throw 2 times on pid:15220) at TCP.onStreamRead (internal/stream_base_commons.js:167:27) ECONNRESETError: read ECONNRESET (uncaughtException throw 2 times on pid:15220) at TCP.onStreamRead (internal/stream_base_commons.js:167:27) Node NOT Exiting... [2019-10-21 13:38:05.154] [cfork:master:12608] worker:15220 disconnect (exitedAfterDisconnect: true, state: disconnected, isDead: false, worker.disableRefork: false) [2019-10-21 13:38:05.154] [cfork:master:12608] don't fork new work (refork: false) 2019-10-21 13:38:05,154 INFO 12608 [master] app_worker#2:15220 disconnect, suicide: true, state: disconnected, current workers: ["2"] [Mon Oct 21 2019 13:38:35 GMT+0800 (GMT+08:00)] [graceful:worker:15220] kill timeout, exit now. 2019-10-21 13:38:35,404 ERROR 15220 [app_worker] exit with code:1 2019-10-21 13:38:35,427 WARN 18436 [ClusterClient:Connection] socket is closed by other side while there were still unhandled data in the socket buffer [2019-10-21 13:38:35.436] [cfork:master:12608] worker:15220 exit (code: 1, exitedAfterDisconnect: true, state: dead, isDead: true, isExpected: true, worker.disableRefork: false) 2019-10-21 13:38:35,437 ERROR 12608 nodejs.AppWorkerDiedError: [master] app_worker#2:15220 died (code: 1, signal: null, suicide: true, state: dead), current workers: [] at Master.onAppExit (D:\Webapp\node_modules\egg-cluster\lib\master.js:510:21) at Master.emit (events.js:197:13) at Messenger.sendToMaster (D:\Webapp\node_modules\egg-cluster\lib\utils\messenger.js:137:17) at Messenger.send (D:\Webapp\node_modules\egg-cluster\lib\utils\messenger.js:102:12) at EventEmitter.cluster.on (D:\Webapp\node_modules\egg-cluster\lib\master.js:353:22) at EventEmitter.emit (events.js:202:15) at ChildProcess.worker.process.once (internal/cluster/master.js:186:13) at Object.onceWrapper (events.js:285:20) at ChildProcess.emit (events.js:197:13) at Process.ChildProcess._handle.onexit (internal/child_process.js:254:12) name: "AppWorkerDiedError" pid: 12608 hostname: solomon001 /////////////////////////////////////////////////////////////////////