带有mysql的NodeJS服务器挂起

我正在使用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的人,得到了一些坚定的答案.

> MySQL确实修剪了空闲连接.有一个MySQL变量“wait_timeout”,用于设置超时前的秒数,默认为8小时.我们可以将默认值设置为远大于此值.使用显示变量,如’wait_timeout’;查看超时设置并设置wait_timeout = 28800;改变它.
>根据this issue,node-mysql在这些断开连接后不会修剪池连接.模块开发人员建议使用心跳来保持连接活动,例如调用SELECT 1;在一个间隔.他们还建议使用node-pool module及其idleTimeoutMillis选项自动修剪空闲连接.

转载注明原文:带有mysql的NodeJS服务器挂起 - 代码日志