【问题标题】:Sequelize blocking node event loop on large queriesSequelize 大型查询的阻塞节点事件循环
【发布时间】:2022-07-07 22:33:58
【问题描述】:

最近我们注意到我们的应用程序性能不佳,使用 blocked-at 包发现 Sequelize (v5.22) 在大型查询中阻塞了节点事件循环。

查询并不复杂,只是FooModel.findAll(someOptions),也没有任何连接。只是结果可能高达 100k 行。

是否有一些已知的方法可以提高性能,或者至少确保事件循环不会被阻塞?

【问题讨论】:

  • 看起来您需要使用分页来通过使用合理大小的块来获得 100k 条记录。一次获取所有内容是个坏主意,因为从 DB Sequelize 获取它们后,需要将它们转换为需要一些时间并在主线程中发生的对象。另一种方法是使用工作线程

标签: node.js sequelize.js event-loop


【解决方案1】:

对blocked-at 的进一步测试表明,它提供的跟踪并不总是100% 准确。它有时指示将控制权返回给事件循环的点,而不是导致事件循环被阻塞的任务。

就我而言,问题不是 FooModel.findAll,而是之前的一些逻辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    相关资源
    最近更新 更多