如何解决NodeJS MYSQL ECONNREFUSED 偶发性发生
我已经创建了我的第一个 API,并且正在实施错误检查和错误处理。
我访问了我的日志(我一直在运行)并遇到了这些问题,这些问题一直在停止我的 API 服务并在不同时间回复内部错误..
现在我的理解是有限的,但这些似乎是 MysqL 问题。 我已经阅读了一些关于连接池的内容,但我真的不知道这是否是我的问题,希望有人能指出我正确的方向。 我还在日志中获取了不是 API 调用的内容:
例如
[0mGET / [33m404[0m 43.046 ms - 42[0m
[0mGET /nmaplowercheck1610724839 [33m404[0m 0.680 ms - 42[0m
[0mPOST /sdk [33m404[0m 0.234 ms - 42[0m
[0mGET / [33m404[0m 58.176 ms - 42[0m
[0mGET /evox/about [33m404[0m 0.295 ms - 42[0m
[0mGET /HNAP1 [33m404[0m 0.299 ms - 42[0m
[0mGET / [33m404[0m 0.301 ms - 42[0m
[0mGET / [33m404[0m 0.289 ms - 42[0m
[0mGET /favicon.ico [33m404[0m 0.296 ms - 42[0m
我不知道这些东西是什么,虽然目前这只是一个测试 API..这是我需要关注的事情吗?
const MysqL = require('MysqL');
config ={
socketPath: '/var/lib/MysqL/MysqL.sock',host:'localhost',user: 'XXXXXXX',password: 'XXXXXXX',database : 'XXXXX_DB',multipleStatements: true
}
var MysqLConnection = MysqL.createConnection(config);
MysqLConnection.connect((err) =>{
if(!err)
console.log('DB connection success');
else
console.log('DB Failed \n Error: ' + JSON.stringify(err,undefined,2));
});
module.exports ={
connection : MysqLConnection
}
当前正在处理的错误:
[0mGET /favicon.ico [33m404[0m 0.296 ms - 42[0m
events.js:174
throw er; // Unhandled 'error' event
^
Error: Connection lost: The server closed the connection.
at Protocol.end (/home/XXXX/qudaAPI/node_modules/MysqL/lib/protocol/Protocol.js:112:13)
at Socket.<anonymous> (/home/XXXX/qudaAPI/node_modules/MysqL/lib/Connection.js:94:28)
at Socket.<anonymous> (/home/XXXX/qudaAPI/node_modules/MysqL/lib/Connection.js:526:10)
at Socket.emit (events.js:203:15)
at endReadableNT (_stream_readable.js:1145:12)
at process._tickCallback (internal/process/next_tick.js:63:19)
Emitted 'error' event at:
at Connection._handleProtocolError (/home/XXXX/qudaAPI/node_modules/MysqL/lib/Connection.js:423:8)
at Protocol.emit (events.js:198:13)
at Protocol._delegateError (/home/XXXX/qudaAPI/node_modules/MysqL/lib/protocol/Protocol.js:398:10)
at Protocol.end (/home/XXXX/qudaAPI/node_modules/MysqL/lib/protocol/Protocol.js:116:8)
at Socket.<anonymous> (/home/XXXX/qudaAPI/node_modules/MysqL/lib/Connection.js:94:28)
[... lines matching original stack trace ...]
at process._tickCallback (internal/process/next_tick.js:63:19)
error: Forever detected script exited with code: 1
error: Script restart attempt #2
DB Failed
Error: {
"errno": "ECONNREFUSED","code": "ECONNREFUSED","syscall": "connect","address": "127.0.0.1","port": 3306,"fatal": true
}
[0mPOST /smsHx/ [31m501[0m 120.501 ms - 16[0m
{ Error: Cannot enqueue Query after Fatal error.
at Protocol._validateEnqueue (/home/XXXX/qudaAPI/node_modules/MysqL/lib/protocol/Protocol.js:212:16)
at Protocol._enqueue (/home/XXXX/qudaAPI/node_modules/MysqL/lib/protocol/Protocol.js:138:13)
at Connection.query (/home/XXXX/qudaAPI/node_modules/MysqL/lib/Connection.js:198:25)
at router.post (/home/XXXX/qudaAPI/api/routes/auth.js:81:16)
at Layer.handle [as handle_request] (/home/XXXX/qudaAPI/node_modules/express/lib/router/layer.js:95:5)
at next (/home/XXXX/qudaAPI/node_modules/express/lib/router/route.js:137:13)
at module.exports (/home/XXXX/qudaAPI/verifyQudaAPI.js:11:9)
at Layer.handle [as handle_request] (/home/XXXX/qudaAPI/node_modules/express/lib/router/layer.js:95:5)
at next (/home/XXXX/qudaAPI/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/home/XXXX/qudaAPI/node_modules/express/lib/router/route.js:112:3) code: 'PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR',fatal: false }
最终错误:
[0mGET /chemists/profileSettings [32m200[0m 18.903 ms - 502[0m
events.js:174
throw er; // Unhandled 'error' event
^
Error: Connection lost: The server closed the connection.
at Protocol.end (/home/XXXX/qudaAPI/node_modules/MysqL/lib/protocol/Protocol.js:112:13)
at Socket.<anonymous> (/home/XXXX/qudaAPI/node_modules/MysqL/lib/Connection.js:94:28)
at Socket.<anonymous> (/home/XXXX/qudaAPI/node_modules/MysqL/lib/Connection.js:526:10)
at Socket.emit (events.js:203:15)
at endReadableNT (_stream_readable.js:1145:12)
at process._tickCallback (internal/process/next_tick.js:63:19)
Emitted 'error' event at:
at Connection._handleProtocolError (/home/XXXX/qudaAPI/node_modules/MysqL/lib/Connection.js:423:8)
at Protocol.emit (events.js:198:13)
at Protocol._delegateError (/home/XXXX/qudaAPI/node_modules/MysqL/lib/protocol/Protocol.js:398:10)
at Protocol.end (/home/XXXX/qudaAPI/node_modules/MysqL/lib/protocol/Protocol.js:116:8)
at Socket.<anonymous> (/home/XXXX/qudaAPI/node_modules/MysqL/lib/Connection.js:94:28)
[... lines matching original stack trace ...]
at process._tickCallback (internal/process/next_tick.js:63:19)
error: Forever detected script exited with code: 1
error: Script restart attempt #1
events.js:174
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE: address already in use :::3000
at Server.setupListenHandle [as _listen2] (net.js:1280:14)
at listenInCluster (net.js:1328:12)
at Server.listen (net.js:1415:7)
at Function.listen (/home/XXXX/qudaAPI/node_modules/express/lib/application.js:618:24)
at Object.<anonymous> (/home/XXXX/qudaAPI/qudaserver.js:4:5)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
Emitted 'error' event at:
at emitErrorNT (net.js:1307:8)
at process._tickCallback (internal/process/next_tick.js:63:19)
at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJscore (internal/bootstrap/node.js:623:3)
error: Forever detected script exited with code: 1
error: Script restart attempt #2
events.js:174
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE: address already in use :::3000
at Server.setupListenHandle [as _listen2] (net.js:1280:14)
at listenInCluster (net.js:1328:12)
at Server.listen (net.js:1415:7)
at Function.listen (/home/XXXX/qudaAPI/node_modules/express/lib/application.js:618:24)
at Object.<anonymous> (/home/XXXX/qudaAPI/qudaserver.js:4:5)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
Emitted 'error' event at:
at emitErrorNT (net.js:1307:8)
at process._tickCallback (internal/process/next_tick.js:63:19)
at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJscore (internal/bootstrap/node.js:623:3)
error: Forever detected script exited with code: 1
现在 EADDRINUSE 似乎是节点仍在运行并且永远试图启动它......所以错误已经发生但它已经停止了节点但没有完全杀死它?
我很欣赏这些目前未处理的错误,是的,我正在编写错误处理程序,但这个连接关闭的事情似乎导致了问题,我想直接解决它!
非常感谢您的任何建议/方向/想法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。