当前位置: 首页 > 面试题库 >

MySQL在node.js服务器上的空闲时间后给出“ read ECONNRESET”错误

班凌
2023-03-14
问题内容

我正在运行通过node-
mysql模块连接到MySQL的Node服务器。连接和查询MySQL最初运行良好,没有任何错误,但是,将Node服务器闲置几个小时后的第一个查询会导致错误。错误是熟悉的read 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服务器以及两者的本地设置都发生此错误。

我的问题:

  1. 这个问题似乎是由于Node到MySQL服务器的连接断开,可能是由于连接寿命限制所致?

  2. 使用连接池时,node-mysql应该可以很好地处理断开连接并从连接池中删除它们。在进行查询之前是否不知道断开连接,从而使错误不可避免?

  3. 考虑到我在其他StackOverflow帖子中经常看到“读取ECONNRESET”错误,我是否应该在MySQL的其他地方查找问题以进行诊断?

更新:
更多的浏览之后,我觉得我的问题是重复的这一个。看来他的连接也在断开连接,但是没有人建议如何保持连接活动或如何解决第一个查询失败后的错误。


问题答案:

我在他们的Github页面上联系了node-
mysql的人们,并得到了一些肯定的答案。

  1. MySQL确实会修剪空闲连接。有一个MySQL变量“ wait_timeout”,用于设置超时前的秒数,默认值为8小时。我们可以将默认值设置为更大。使用show variables like 'wait_timeout';查看您的超时设置和set wait_timeout=28800;改变它。

  2. 根据这个问题,node-mysql在这些断开连接后不会修剪池连接。模块开发人员建议使用心跳来使连接保持活动状态,例如按SELECT 1;间隔调用。他们还建议使用节点池模块及其idleTimeoutMillis选项来自动修剪空闲连接。



 类似资料:
  • 我在Localhost中正确上传我的文件,但是当我在服务器上上传我的应用程序时,他们给我错误:上传文件后服务器错误。 这是我的控制器: 在我的本地主机中,文件保存在公用文件夹中。我想用public\u html或public\u html/image将我的文件保存在我的服务中。

  • 我正在尝试运行节点。亚马逊AWS Ec2微实例上的js服务器和Redis服务器。 我已经安装了Redis Server,Redis Server命令运行良好。 我使用“永远”来保持Redis-Server运行。它工作正常。 但当我启动节点服务器时,它无法连接到Redis服务器。 它给出了以下错误- 做一个“永久列表”表明redis服务器运行良好。 我已经验证了当redis-server启动时,它从

  • 在启动节点管理器之后,当我要启动startWeblogic时。sh发生这种情况时,服务器无法启动。(用户名、密码正确) 以行开始WLS:home/app/oracle/java/jdk1.8.0_171/bin/java-server-Xms256m-Xmx512m-XX:CompileThreshold=8000-cp/home/12c/app/oracle/product/12.2.1/wls

  • 我在服务器启动时在第一行得到空指针异常。 我只是想在服务器启动时填充suburbMap,以便稍后使用。 错误日志- 创建名为“areaPostalCodeService”的bean时出错:调用init方法失败;嵌套异常是 java.lang.NullPointerException WARN [localhost-startStop-1] [CloseAwareApplicationContext

  • 说明服务器遇到了一个内部错误(),它无法满足此请求。 例外 servletException:servlet Resteasy的servlet.init()抛出异常java.lang.thread.run(thread.java:701)根本原因