2017-09-14 38 views
0

这个错误发生在我的web服务连续运行8到10个小时后,连续运行永久模块。我的nodejs web服务正在关闭,出现这些错误

{ 
    "date": "Wed Sep 13 2017 21:22:25 GMT+0000 (UTC)", 
    "process": { 
     "pid": 24337, 
     "uid": 1000, 
     "gid": 1000, 
     "cwd": "/path/to/my/file/", 
     "execPath": "/path/to/my/nvm/.nvm/versions/node/v4.4.5/bin/node", 
     "version": "v4.4.5", 
     "argv": ["/path/to/my/nvm/.nvm/versions/node/v4.4.5/bin/node", "/path/to/my/file/app.js"], 
     "memoryUsage": { 
      "rss": 133083136, 
      "heapTotal": 83753568, 
      "heapUsed": 71120576 
     } 
    }, 
    "os": { 
     "loadavg": [0.0029296875, 0.0146484375, 0.04541015625], 
     "uptime": 397147 
    }, 
    "trace": [{ 
     "column": 13, 
     "file": "/path/to/my/file/node_modules/mysql/lib/protocol/Protocol.js", 
     "function": "Protocol.end", 
     "line": 109, 
     "method": "end", 
     "native": false 
    }, { 
     "column": 28, 
     "file": "/path/to/my/file/node_modules/mysql/lib/Connection.js", 
     "function": "", 
     "line": 102, 
     "method": null, 
     "native": false 
    }, { 
     "column": 20, 
     "file": "events.js", 
     "function": "emitNone", 
     "line": 72, 
     "method": null, 
     "native": false 
    }, { 
     "column": 7, 
     "file": "events.js", 
     "function": "Socket.emit", 
     "line": 166, 
     "method": "emit", 
     "native": false 
    }, { 
     "column": 12, 
     "file": "_stream_readable.js", 
     "function": "endReadableNT", 
     "line": 913, 
     "method": null, 
     "native": false 
    }, { 
     "column": 9, 
     "file": "node.js", 
     "function": "nextTickCallbackWith2Args", 
     "line": 442, 
     "method": null, 
     "native": false 
    }, { 
     "column": 17, 
     "file": "node.js", 
     "function": "process._tickDomainCallback", 
     "line": 397, 
     "method": "_tickDomainCallback", 
     "native": false 
    }], 
    "stack": ["Error: Connection lost: The server closed the connection.", " at Protocol.end (/path/to/my/file/node_modules/mysql/lib/protocol/Protocol.js:109:13)", " at Socket.<anonymous> (/path/to/my/file/node_modules/mysql/lib/Connection.js:102:28)", " at emitNone (events.js:72:20)", " at Socket.emit (events.js:166:7)", " at endReadableNT (_stream_readable.js:913:12)", " at nextTickCallbackWith2Args (node.js:442:9)", " at process._tickDomainCallback (node.js:397:17)"], 
    "level": "error", 
    "message": "uncaughtException: Connection lost: The server closed the connection.", 
    "timestamp": "2017-09-13T21:22:25.271Z" 
} 

无法找出为什么会发生这种情况?我也检查了我的数据库是否闲置,但我的数据库是完美的,它不会闲置。那么还有什么会杀死我的节点进程?我已经做了几个研究,哪些是杀死我的API我不知道。然后我开始通过api记录请求,然后我发现了这个错误信息,并且只有在连续处理几个小时后才会出现。

回答

2

您可以在堆栈跟踪中看到您的MySQL数据库连接正在被MySQL服务器自身关闭。

This issue给出了一点关于为什么服务器可能会断开连接,以及如何增加MySQL服务器超时的背景。

Here is a similar question与一个答案,描述如何处理你的Node.js应用程序本身内的这个特定的错误事件。这对断开连接时动态重新连接到MySQL服务器很有用。

如果您按照第二个链接中的示例安全地重新连接,则应该能够阻止您的应用程序从这些数据库超时。与简单地延长超时长度相比,这是一个更为严格的解决方案,尤其是因为您不必完全依赖应用程序外部的行为。

+0

我得到上下面的这个错误的第二一个 {[错误:ER_CON_COUNT_ERROR:连接太多] 代码: 'ER_CON_COUNT_ERROR', 错误号:1040, SQLSTATE:未定义, 致命:真} – Jagadeesh

相关问题