AWS Lambda RDS连接太多

Vis*_*nan 8 mysql amazon-web-services sequelize.js aws-lambda

我已将AWS Lambda函数连接到Amazon RDS(MySQL).同时调用Lambda函数100次时,在RDS中打开了近400个连接(如RDS控制台中所示).为什么是这样?

我用以下方法检查了活动连接:

SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE DB = "MYDB";
Run Code Online (Sandbox Code Playgroud)

所有连接都来自Lambda容器.有谁知道Lambda容器如何对同时请求起作用?为什么容器不能重复使用?

当前配置:

var sequelize = new Sequelize('DB','username', 'password' ,{ dialect: 'mysql', port: port, host: host, pool: { max: 20, min: 0, idle: 300000 } });

即使每个请求打开一个连接,它也应该是100.如何打开400个连接?

我正在使用Sequelize.节点JS 6.9.1

注意:连接仅在Lambda Handler方法之外发生一次

Rob*_*obo 1

Sequelize 默认情况下会创建一个连接池,因此它会创建 4 个连接,因为它被设计为作为长时间运行的服务运行。您可以通过设置来禁用此功能options.poolfalse查看API 参考

然而,随着您的应用程序扩展,这是 Lambda 的一个基本问题,不会消失。我建议在 EC2 中构建数据库代理层来终止数据库连接(即使用ProxySQL)。然后它将有一个到 rds 数据库的连接池。

解决这个问题的唯一方法是使用 dynamodb 作为后端存储。