连接处于关闭状态时无法添加新命令

Ank*_*009 5 amazon-ec2 node.js pm2

我正在将Amazon EC2与Ubuntu一起使用。

我正在使用PM2运行服务器,因为

pm2 start bin/www --log-date-format "YYYY-MM-DD HH:mm" --watch
Run Code Online (Sandbox Code Playgroud)

它工作正常,但是当我尝试在1或2天后访问API时。我会得到错误:

0|www      | 2017-11-29 08:30: name error  { Error: Can't add new command when connection is in closed state
0|www      |     at Connection._addCommandClosedState (/var/www/html/perb_nodejs/node_modules/mysql2/lib/connection.js:158:13)
0|www      |     at Connection.query (/var/www/html/perb_nodejs/node_modules/mysql2/lib/connection.js:621:15)
0|www      |     at Object.loginTrainer (/var/www/html/perb_nodejs/models/trainer.js:49:29)
0|www      |     at /var/www/html/perb_nodejs/routes/v1/trainer.js:50:16
0|www      |     at Layer.handle [as handle_request] (/var/www/html/perb_nodejs/node_modules/express/lib/router/layer.js:95:5)
0|www      |     at next (/var/www/html/perb_nodejs/node_modules/express/lib/router/route.js:137:13)
0|www      |     at Route.dispatch (/var/www/html/perb_nodejs/node_modules/express/lib/router/route.js:112:3)
0|www      |     at Layer.handle [as handle_request] (/var/www/html/perb_nodejs/node_modules/express/lib/router/layer.js:95:5)
0|www      |     at /var/www/html/perb_nodejs/node_modules/express/lib/router/index.js:281:22
0|www      |     at Function.process_params (/var/www/html/perb_nodejs/node_modules/express/lib/router/index.js:335:12) fatal: true }
Run Code Online (Sandbox Code Playgroud)

然后,我必须重新启动PM2实例。

我了解到由于封闭的连接,我面临着这个问题。但是为什么在我使用PM2时会发生这种情况。我认为PM2应该做同样的工作。

package.json

{
  "name": "",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "body-parser": "~1.18.2",
    "cookie-parser": "~1.4.3",
    "cors": "2.8.4",
    "debug": "~2.6.9",
    "express": "~4.15.5",
    "jade": "~1.11.0",
    "morgan": "~1.9.0",
    "multer": "1.3.0",
    "mysql2": "1.5.0",
    "path": "0.12.7",
    "request": "2.83.0",
    "serve-favicon": "~2.4.5"
  }
}
Run Code Online (Sandbox Code Playgroud)

编辑:我认为不是因为服务器,而是数据库连接已关闭。

任何帮助将不胜感激。

Sam*_*son 0

我通过在 10 秒不活动后关闭连接,然后创建一个新连接来解决我的问题。真正的问题是无法知道连接是否打开。