【问题标题】:Construction of an instance of Sequelize seems to take too longSequelize 实例的构建似乎花费了太长时间
【发布时间】:2020-11-28 02:13:03
【问题描述】:

我有一些 Typescript 代码使用 sequelize@5.22.3sequelize-typescript@1.1.0 库来管理 AWS Aurora MySQL RDS 数据库( 5.7.mysql_aurora.2.07.2)。

此代码作为 Lambda 函数运行,可通过 AWS API 网关访问。所有这些(包括 RDS 数据库)都部署在私有 VPC 中(所有这些都部署在同一个 VPC 中)。

这是我为创建 Sequelize 实例而调用的函数(这是在 Lambda 函数的加载时间完成的):

import { Sequelize } from 'sequelize-typescript';

function createSequelize(): Sequelize {
  const t0 = new Date().getTime();
  const sequelize = new Sequelize('mysql://aaa.cluster-c52mlmcfdpvd.eu-west-2.rds.amazonaws.com/bbb', {
    dialect: 'mysql',
    logging: false,
    username: 'xxx',
    password: 'xxx',
    pool: {
      min: 0,
      max: 1,
      idle: 10000,
      acquire: 30000
    }
  });

  const t1 = new Date().getTime();

  console.log(t1 - t0);

  return sequelize;
}

注意:我在上面的代码中使用了虚拟字符串来隐藏敏感数据(例如aaabbbxxx)。

如你所见,我已经在这部分添加了一些计时代码。

我很惊讶这需要 1.5s2s 之间。

当 Lambda 处于冷态时,这会在我们的应用程序中引入不可接受的延迟。

我可以做些什么来减少这个时间?

可能相关的其他库版本:

  • typescript@3.9.7
  • mysql2@2.1.0
  • aws-sdk@2.725.0
  • aws-lambda@1.0.6

【问题讨论】:

    标签: mysql node.js typescript amazon-web-services sequelize.js


    【解决方案1】:

    终于查明原因了。默认情况下,Lambda 函数具有 128MB 内存。

    当我将其增加到 1600MB 时,Sequelize 实例的构造下降到大约 150ms

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2020-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-20
      相关资源
      最近更新 更多