Jus*_*Fox 5 mysql amazon-web-services amazon-rds node.js aws-lambda
我们目前正在经历我只能描述为AWS Lambda 和 RDS 之间的随机间歇超时。部署我们的函数并成功运行后,它们可以随机切换到超时状态,无需更改配置。重要的是要注意,我们还在监控数据库连接,可以确认我们没有遇到最大连接问题。
以下是我们设置的详细信息:
正在执行的代码(使用 Node.JS v. 6.10):
const mysql = require('mysql');
exports.dbWrite = (events, context, callback) => {
const db = mysql.createConnection({
host: <redacted>,
user: <redacted>,
password: <redacted>,
database: <redacted>
});
db.connect(function (err) {
if (err) {
console.error('error connecting: ' + err.stack);
return;
}
console.log('connected !');
});
db.end();
};
Run Code Online (Sandbox Code Playgroud)
我们使用的是 Node.JSmysql库,版本 2.14.1。
从网络的角度:
云观察错误:
{
"errorMessage": "connect ETIMEDOUT",
"errorType": "Error",
"stackTrace": [
"Connection._handleConnectTimeout
(/var/task/node_modules/mysql/lib/Connection.js:419:13)",
"Socket.g (events.js:292:16)",
"emitNone (events.js:86:13)",
"Socket.emit (events.js:185:7)",
"Socket._onTimeout (net.js:338:8)",
"ontimeout (timers.js:386:14)",
"tryOnTimeout (timers.js:250:5)",
"Timer.listOnTimeout (timers.js:214:5)",
" --------------------",
"Protocol._enqueue
(/var/task/node_modules/mysql/lib/protocol/Protocol.js:145:48)",
"Protocol.handshake
(/var/task/node_modules/mysql/lib/protocol/Protocol.js:52:23)",
"Connection.connect
(/var/task/node_modules/mysql/lib/Connection.js:130:18)",
"Connection._implyConnect
(/var/task/node_modules/mysql/lib/Connection.js:461:10)",
"Connection.query
(/var/task/node_modules/mysql/lib/Connection.js:206:8)",
"/var/task/db-write-lambda.js:52:12",
"getOrCreateEventTypeId (/var/task/db-write-lambda.js:51:12)",
"exports.dbWrite (/var/task/db-write-lambda.js:26:9)"
]
}
Run Code Online (Sandbox Code Playgroud)
在已经审查的参考文献中:
总之,这些超时是间歇性的这一事实使这个问题完全令人困惑。AWS 支持已声明这NodeJS-mysql是第三方工具,技术上不受支持,但我知道人们正在使用这种技术。
任何帮助是极大的赞赏!
考虑到 RDS 连接并未耗尽,运行到特定子网的 lambda 可能始终无法连接到 db。我假设 RDS 实例和 lambda 在不同的子网中运行。调查此问题的一种方法是检查流日志。
转到 EC2 -> 网络接口 -> 搜索 lambda 名称 -> 复制 eni ref,然后转到 VPC -> 子网 -> 选择 lambda 的子网 -> 流日志 -> 按 eni ref 搜索。
如果您在数据库端口的流日志中看到“REJECT OK”,则意味着网络 ACL 中缺少配置。
| 归档时间: |
|
| 查看次数: |
2714 次 |
| 最近记录: |