Sequelize:TimeoutError:ResourceRequest 超时

Posted

技术标签:

【中文标题】Sequelize:TimeoutError:ResourceRequest 超时【英文标题】:Sequelize: TimeoutError: ResourceRequest timed out 【发布时间】:2018-01-29 20:40:07 【问题描述】:

在节点 6.11 和 Sequelize 4.5.0 上运行的我的 Express 应用程序有时会抛出 TimeoutError: ResourceRequest timed out,在不应该特别昂贵的操作上。我们说的是 5 行写入,每行单独执行。

该数据库是一个 Amazon RDS mysql 实例,在连接到我们用 Ruby 编写并使用 ActiveRecord 作为 ORM 的第二个 API 时没有显示任何问题。

我不知道如何开始诊断问题,对我接下来应该做什么有什么想法吗?

【问题讨论】:

数据有多大?让我们看看相关的sequelize代码和SHOW CREATE TABLE 根据documentation page,您可能正在处理死锁。您能否在此处发布您的查询以保持顺序? 使用 mysql 连接池代替。 【参考方案1】:

我认为我是最有资格回答这个问题的人。

无论我如何调整配置,这个问题曾经让我的生活陷入困境。

所以这个问题有两个解决方案第一个是设置池配置像这样

pool: 
      max: 50,
      min: 0,
      acquire: 1200000,
      idle: 1000000,
    

这将再次解决您现在的问题,但是当您的负载增加时,您将再次开始收到错误。

回到第二个解决方案,您可以真正查看表架构或针对该表运行的查询。如果您遇到这些问题,则意味着您的查询没有得到优化,这需要比正常时间长得多的时间 最好的办法是在列上使用索引,你永远不会遇到这个问题

【讨论】:

【参考方案2】:

对于仍在使用 Sequelize v4 的用户,v4.44.1 可能已修复此问题。

见公关:https://github.com/sequelize/sequelize/pull/11140

查看问题:https://github.com/sequelize/sequelize/issues/11139

【讨论】:

【参考方案3】:

我在使用消耗大量时间的查询进行续集时遇到了同样的问题。 基于 github 问题 (https://github.com/sequelize/sequelize/issues/8133#issuecomment-359993057),我的解决方法是增加获取时间。 当我实例化一个新的续集时,我会执行以下操作:

const sequelize = new Sequelize(
  config.get("dbConfig.dbName"),
  config.get("dbConfig.user"),
  config.get("dbConfig.password"),
  
    dialect: "mysql",
    operatorsAliases: false,
    host: config.get("dbConfig.host"),
    pool: 
      max: 100,
      min: 0,
      idle: 200000,
      // @note https://github.com/sequelize/sequelize/issues/8133#issuecomment-359993057
      acquire: 1000000,
    
  
);

【讨论】:

【参考方案4】:

这个解决方案对我有用:

  pool: 
    max: 100,
    min: 0,
    // @note https://github.com/sequelize/sequelize/issues/8133#issuecomment-359993057
    acquire: 100*1000,
  

【讨论】:

欢迎来到 Stack Overflow。虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。 How to Answer

以上是关于Sequelize:TimeoutError:ResourceRequest 超时的主要内容,如果未能解决你的问题,请参考以下文章

在循环TimeoutError中启动多个select查询时出现错误:ResourceRequest超时

SQLite 的 Sequelize-auto

Sequelize join with group by

Sequelize js - 限制和排序错误

egg.js 24.11sequelize模型-查询多个和获取器

TimeoutError: QueuePool 大小为 5 的限制溢出 10,连接超时,超时 30