gpt4 book ai didi

mysql - 带有 mysql 的 NodeJS 服务器挂起

转载 作者:可可西里 更新时间:2023-11-01 06:47:52 25 4
gpt4 key购买 nike

我正在使用 NodeJS、Express、mysql 编写一个应用程序,到目前为止一切正常,但是当我在 mysql 连接中断的某个时间后运行我的应用程序时,我的应用程序通过此异常出现并且我的应用程序关闭。

Error: read ECONNRESET
at errnoException (net.js:901:11)
at TCP.onread (net.js:556:19)

从另一个堆栈问题我开始知道我必须处理这样未捕获的异常。

process.on('uncaughtException', function(err) {
console.log('Caught exception: ' + err);
console.log(err.stack);
});

在此之后我的应用程序不会退出,而是挂起,所以我的问题是如何处理这个异常,以便即使在这个异常之后 mysql 连接正常,我的应用程序也不会挂起。

最佳答案

我不确定您是否在项目中使用了 node-mysql 模块,但我确实使用过,并且我遇到了同样的 ECONNRESET 问题。这是我的回答的重复 on my issue :

我在 their Github page 上联系了 node-mysql 人员并得到了一些确定的答案。

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

  2. 根据 this issue , node-mysql 在这些断开连接后不会修剪池连接。模块开发人员建议使用心跳来保持连接有效,例如每隔一段时间调用 SELECT 1;。他们还建议使用 node-pool module及其自动修剪空闲连接的 idleTimeoutMillis 选项。

关于mysql - 带有 mysql 的 NodeJS 服务器挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22602362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com