gpt4 book ai didi

javascript - 有谁知道为什么这个错误在几分钟后一次又一次地发生

转载 作者:行者123 更新时间:2023-11-30 06:19:20 24 4
gpt4 key购买 nike

我正在使用 nodemon npm 包在检测到目录中的文件更改时自动重启 Node 应用程序。服务器是使用 express 和 http npm 包创建的。问题是当服务器空闲几分钟时会抛出错误 Error: read ECONNRESET实际错误如下:

events.js:167
throw er; // Unhandled 'error' event
^
Error: read ECONNRESET
at TCP.onStreamRead (internal/stream_base_commons.js:111:27)
Emitted 'error' event at:
at Connection._handleProtocolError (/home/abc/node_modules/mysql/lib/Connection.js:425:8)
at Protocol.emit (events.js:182:13)
at Protocol._delegateError (/home/abc/node_modules/mysql/lib/protocol/Protocol.js:390:10)
at Protocol.handleNetworkError (/home/abc/node_modules/mysql/lib/protocol/Protocol.js:363:10)
at Connection._handleNetworkError (/home/abc/node_modules/mysql/lib/Connection.js:420:18)
at Socket.emit (events.js:182:13)
at emitErrorNT (internal/streams/destroy.js:82:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)
at process._tickCallback (internal/process/next_tick.js:63:19)

我已 try catch 错误,但这并不能解决我的问题。

process.on('uncaughtException', function(err) {  
console.log("uncaughtException called: \n", err);
})

服务器是使用express和http创建的:

express = require('express');
app = express();
http = require('http');
var httpServer = http.createServer(app);
httpServer.listen(3000, function(req, res) {
console.log('Server running at port 3000);
});

我希望防止服务器发生 ECONNRESET 错误解决方案是什么?

最佳答案

根据抛出的错误可以看出这是mysql的问题:

Emitted 'error' event at:
at Connection._handleProtocolError (/home/abc/node_modules/mysql/lib/Connection.js:425:8)

我遇到了同样的问题,我修复它的方法是在连接到数据库之后我添加了一个 setInterval,每 20 分钟执行一个简单的查询,例如 db.query('SELECT 1;') .据说 mysql 在空闲时间后关闭连接,因此基于此 post

“模块开发人员建议使用心跳来保持连接有效,例如调用 SELECT 1; 间隔一段时间。”

这是一个快速修复,它对我有用,但如果您想找出不同的方法,我建议您阅读上面的帖子,因为还有其他解决方案。

关于javascript - 有谁知道为什么这个错误在几分钟后一次又一次地发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54129546/

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