【发布时间】:2017-12-27 02:01:46
【问题描述】:
我已将 AWS Lambda 函数连接到 Amazon RDS (MySQL)。当 Lambda 函数同时调用 100 次时,RDS 中打开了近 400 个连接(如 RDS 控制台所示)。为什么是这样?
我使用以下方法检查了活动连接:
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE DB = "MYDB";
所有连接都来自 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 处理程序方法之外发生一次
【问题讨论】:
-
可能由于有很多相同的请求,它可能会将其数据库连接扩展到预期会有这么多负载的水平。你能试着保持连接并在一段时间后提出下一个请求吗
-
它可能会重用容器,但这不是 Web 应用程序所必需的,对吧?并发是 Web 应用程序的基本原则。为什么 Lambda 需要这么多容器来处理 100 个请求?
标签: mysql amazon-web-services aws-lambda sequelize.js