续写连接超时,同时使用无服务器极光,寻找一种方法来增加超时时间或重试连接

k5hmc34c  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(313)

我现在遇到了一个问题,我正在尝试使用一个无服务器的aurora数据库作为我的应用程序的一部分。
问题在于,当数据库处于冷态时,建立连接的时间可能超过30秒(由于db spinup),这似乎比sequelize(使用mysql)中的默认超时时间要长,据我所知,我找不到任何其他方法来增加超时时间,或者我需要某种方法来重新尝试连接?
这是我当前的配置:

const sequelize = new Sequelize(DATABASE, DB_USER, DB_PASSWORD, {
    host: DB_ENDPOINT,
    dialect: "mysql",
    operatorsAliases: false,
    pool: {
      max: 2,
      min: 0,
      acquire: 120000, // This needs to be fairly high to account for a 
      serverless db spinup
      idle: 120000,
      evict: 120000
    }
});

另外几点:一旦数据库是热的,那么所有的工作都是完美的。让数据库保持“热”状态,虽然从技术上讲是可行的,但这有点违背了将其作为无服务器数据库的观点(成本原因)。我很乐意让我的客户机在超时是连接错误的情况下重新尝试api调用。
这是日志,以备不时之需。

{
"name": "SequelizeConnectionError",
"parent": {
    "errorno": "ETIMEDOUT",
    "code": "ETIMEDOUT",
    "syscall": "connect",
    "fatal": true
},
"original": {
    "errorno": "ETIMEDOUT",
    "code": "ETIMEDOUT",
    "syscall": "connect",
    "fatal": true
}
}
ddrv8njm

ddrv8njm1#

因此,在进一步挖掘之后,您似乎可以使用options对象上的dialections属性将内容传递给底层连接。

dialectOptions: {
  connectTimeout: 60000
}

这似乎起了作用。

相关问题