我有一些使用的Typescript代码sequelize@5.22.3和sequelize-typescript@1.1.0用于管理AWS Aurora MySQL RDS数据库的库(5.7.MySQL_Aurora.2.07.2(。
此代码作为Lambda函数运行,可通过AWS API网关访问。所有这些(包括RDS DB(都部署在一个私有的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;
}
注意:我在上面的代码中使用了伪字符串来隐藏敏感数据(例如aaa、bbb和xxx(。
正如你所看到的,我已经把一些时间代码围绕这个。
我感到非常惊讶的是,这需要1.5s和 2s每当Lambda变冷时,这会在我们的应用程序中引入不可接受的延迟。 我能做些什么来减少这段时间吗? 其他可能相关的库版本:
最终找到了原因。默认情况下,Lambda函数具有128MB的内存。
当我将其增加到1600MB时,Sequelize实例的构建量降至150ms左右。