【发布时间】:2020-06-29 20:28:15
【问题描述】:
我有一个通过 Lambda 连接到 AWS MySQL 数据库的简单程序。
应用程序的每个请求基本上都是对数据库的单个查询。因此,如果我有 3 个用户使用该应用程序,则不可能同时在数据库上运行超过 3 个查询。
然而,当我查看我的连接数时,它可能高达 15 个。我一直无法准确理解它应该如何工作。
如果代码编写正确,是否意味着如果同时有 3 个用户,我的连接数不应超过 3 个?
我一直在尝试找到一篇基本文章来解释这一点,但显然没有,因此我在这里。
谢谢。
编辑添加代码 以下是我的代码的精简版
var mysql = require('mysql');
var pool =[];
exports.handler = (event, context, callback) => {
context.callbackWaitsForEmptyEventLoop = false;
pool = mysql.createPool({
host : 'host-details',
user : 'username',
password : 'password',
database : 'db'
});
return myFunc(event, context, callback, data.Username);
}
};
const myFunc = async (event, context, callback) => {
const query = 'SELECT * from db.table';
const data = await dbQueryAsyncWL(context, callback, query);
return callback(null, {data: data});
}
const dbQueryAsyncWL = async (context, callback, query) => {
return new Promise((resolve) => {
context.callbackWaitsForEmptyEventLoop = false;
pool.getConnection(function(error, connection) {
connection.query(query, function (error, results, fields) {
connection.release();
if (error) {callback(error);} else {resolve(results);}
});
});
})
}
【问题讨论】:
-
如何创建连接?您是否明确关闭这些连接?显示一些代码会很有帮助。
标签: mysql amazon-web-services aws-lambda amazon-rds