我在我的应用程序中使用Nodejs进行Web套接字通信。
该应用程序定期向AWS dynamodb发送用户数据。我收到了许多新的遗迹提醒,以下是堆栈跟踪:
Error: read ECONNRESET
at exports._errnoException (util.js:856:11)
at TLSWrap.onread (net.js:545:26) /
我只想了解为什么会出现TLSWrap错误。
提前感谢。
我在我的应用程序中使用Nodejs进行Web套接字通信。
该应用程序定期向AWS dynamodb发送用户数据。我收到了许多新的遗迹提醒,以下是堆栈跟踪:
Error: read ECONNRESET
at exports._errnoException (util.js:856:11)
at TLSWrap.onread (net.js:545:26) /
之前我也遇到过你提到的类似问题。
我通过注释代码(向第三方请求)进行调试,最终发现问题根源是由于dynamoDB引起的。有一些未捕获的异常(aws-sdk),并且它们没有被处理。
我尝试通过捕获异常来解决问题,但捕获未捕获的异常并不是一个好习惯。
process.on('uncaughtException', function (err) {
logger.log('error','UNCAUGHT EXCEPTION - keeping process alive:', err);
});
然后我尝试通过更改AWS配置来解决问题。
AWS.config.httpOptions['agent'] = new https.Agent({
keepAlive: true,
ciphers: 'ALL',
secureProtocol: 'TLSv1_method'
});
keepAlive: true -- 我将其设置为false后,问题就没有再出现。但这不是正确的做法。对于每个向dynamodb的请求,它都会重新握手,这会使速度变慢一点。
secureProtocol :'TLSv1_method' -- 我还尝试了不同的方法(https://www.openssl.org/docs/man1.0.2/ssl/TLSv1_method.html)。但这并没有帮助我。
我的nodejs版本是5.2。我刚刚升级了nodejs版本到6.11(LTS)并更新了aws-sdk包。
现在我的问题已经解决,没有再出现任何问题。