我通过 AWS API Gateway 和 AWS Lambda 设置了一个无服务器 API,它利用 AWS RDS 代理连接到 RDS MySQL 数据库。
我通过执行以下操作打开每个 Lambda 执行的连接:
sequelize = new Sequelize(process.env.DB, process.env.USER, process.env.PASS, {
host: process.env.RDS_PROXY_ENDPOINT,
dialect: 'mysql',
dialectModule: mysql2
});
...
console.info("doing authenticate");
await this.sequelize.authenticate();
console.info("done, returning connection.");
...
BUSINESS LOGIC (mostly CRUD operations)
...
finally{
await sequelize.close();
}
现在,我们在某些 api 调用上遇到了随机 lambda 超时,如果我们刷新页面,那么在同一端点上的后续 api 调用就会成功。
问题是:
在我的 lambda 函数中使用连接将其释放到代理后,我应该调用 sequelize close 吗?
这是我的 RDS 代理面板,您可以看到客户端连接大多为 1 或 2,但我遇到了连接问题。
有什么建议吗?