MySQL在node.js服务器上空闲时间后出现“读取ECONNRESET”错误
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL在node.js服务器上空闲时间后出现“读取ECONNRESET”错误,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1862字,纯文字阅读大概需要3分钟。
内容图文
![MySQL在node.js服务器上空闲时间后出现“读取ECONNRESET”错误](/upload/InfoBanner/zyjiaocheng/890/88e5a83c336e43748db3cbe9623eed0e.jpg)
我正在运行一个通过node-mysql模块连接MySQL的Node服务器.连接和查询MySQL最初运行良好,没有任何错误,但是,在将节点服务器空闲几小时后的第一个查询会导致错误.错误是熟悉的读取ECONNRESET,来自node-mysql模块的深度.
堆栈跟踪(请注意,跟踪的三个条目属于我的应用程序的错误报告代码):
Error
at exports.Error.utils.createClass.init (D:\home\site\wwwroot\errors.js:180:16)
at new newclass (D:\home\site\wwwroot\utils.js:68:14)
at Query._callback (D:\home\site\wwwroot\db.js:281:21)
at Query.Sequence.end (D:\home\site\wwwroot\node_modules\mysql\lib\protocol\sequences\Sequence.js:78:24)
at Protocol.handleNetworkError (D:\home\site\wwwroot\node_modules\mysql\lib\protocol\Protocol.js:271:14)
at PoolConnection.Connection._handleNetworkError (D:\home\site\wwwroot\node_modules\mysql\lib\Connection.js:269:18)
at Socket.EventEmitter.emit (events.js:95:17)
at net.js:441:14
at process._tickCallback (node.js:415:13)
我的云节点服务器和MySQL服务器以及两者的本地设置都会发生此错误.
我的问题:
>这个问题是否是由于连接生命周期限制导致Node与MySQL服务器的连接断开?
>使用连接池时,node-mysql应该优雅地处理断开连接并从池中删除它们.在我进行查询之前是否不知道断开连接,从而使错误不可避免?
>考虑到我在其他StackOverflow帖子中看到了很多“读取ECONNRESET”错误,我应该从MySQL寻找其他地方来诊断问题吗?
更新:更多浏览后,我认为我的问题是this one的重复.看来他的连接也断开连接,但没有人建议如何保持连接活动或如何解决第一个查询失败之外的错误.
解决方法:
我在their Github page找到了node-mysql的人,得到了一些坚定的答案.
> MySQL确实修剪了空闲连接.有一个MySQL变量“wait_timeout”,用于设置超时前的秒数,默认为8小时.我们可以将默认值设置为远大于此值.使用显示变量,如’wait_timeout’;查看超时设置并设置wait_timeout = 28800;改变它.
>根据this issue,node-mysql在这些断开连接后不会修剪池连接.模块开发人员建议使用心跳来保持连接活动,例如调用SELECT 1;在一个间隔.他们还建议使用node-pool module及其idleTimeoutMillis选项自动修剪空闲连接.
内容总结
以上是互联网集市为您收集整理的MySQL在node.js服务器上空闲时间后出现“读取ECONNRESET”错误全部内容,希望文章能够帮你解决MySQL在node.js服务器上空闲时间后出现“读取ECONNRESET”错误所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。