Heroku部署超时时,Sequelize,MySQL和Quit不活动

时间:2017-05-15 02:59:19

标签: mysql node.js heroku sequelize.js cleardb

我正在尝试使用Sequelize和一个MySQL数据库通过ClearDB将一个nodejs SPA部署到Heroku。该应用程序在本地运行,在Heroku上成功构建,并在我从浏览器请求时崩溃,并出现以下错误:

2017-05-15T01:57:11.830234+00:00 app[web.1]: Unhandled rejection SequelizeConnectionError: Quit inactivity timeout
2017-05-15T01:57:11.830243+00:00 app[web.1]:     at Quit._callback (/app/node_modules/sequelize/lib/dialects/mysql/connection-manager.js:136:30)
2017-05-15T01:57:11.830244+00:00 app[web.1]:     at Quit.Sequence.end (/app/node_modules/mysql/lib/protocol/sequences/Sequence.js:86:24)
2017-05-15T01:57:11.830245+00:00 app[web.1]:     at /app/node_modules/mysql/lib/protocol/Protocol.js:399:18
2017-05-15T01:57:11.830246+00:00 app[web.1]:     at Array.forEach (native)
2017-05-15T01:57:11.830246+00:00 app[web.1]:     at /app/node_modules/mysql/lib/protocol/Protocol.js:398:13
2017-05-15T01:57:11.830247+00:00 app[web.1]:     at _combinedTickCallback (internal/process/next_tick.js:73:7)
2017-05-15T01:57:11.830248+00:00 app[web.1]:     at process._tickCallback (internal/process/next_tick.js:104:9)
2017-05-15T01:57:24.016935+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path="/" host=widg.herokuapp.com request_id=cc5ac3b0-c003-46df-af32-e80f46d56a0b fwd="69.140.81.157" dyno=web.1 connect=1ms service=30000ms status=503 bytes=0 protocol=http
2017-05-15T01:57:24.018979+00:00 app[web.1]: GET / - - ms - -
2017-05-15T01:57:24.324884+00:00 heroku[router]: at=info method=GET path="/favicon.ico" host=widg.herokuapp.com request_id=85abc16a-8ef9-4a07-81d4-1a6bf43a6579 fwd="69.140.81.157" dyno=web.1 connect=1ms service=33ms status=500 bytes=318 protocol=http

基于各种线程,我读到可能一直在处理同样的问题,我尝试在Sequelize中添加一些额外的池设置,并在我的sequelize index.js中添加以下内容

if (config.use_env_variable) {
  var sequelize = new Sequelize(process.env[config.use_env_variable], {
    dialect: 'mysql',
    protocol: 'mysql',
    pool: { idle: 120000, max: 5, min: 0},
    logging: true //false
  });
} else {
  var sequelize = new Sequelize(config.database, config.username, config.password, config);
}

我的配置相关部分.json只是:

  "production": {
    "use_env_variable": "DATABASE_URL"
  }

请注意,我确实将CLEARDB_DATABASE_URL分配给了DATABASE_URL,所以这不是问题。另外,使用我的sequelize迁移文件来设置数据库没有问题,所以它显然可以连接。

我当前的主要问题是:

  • 是否需要为Sequelize设置一个特定端口,以便在CLEARDB环境变量之外与数据库通信?

  • 我是否需要在某处使用套接字文件?

非常感谢您提供的任何帮助或想法。

0 个答案:

没有答案