注意到一个有趣的行为,并且想知道如何调用Lambda(并且看似复制了?)以及管理数据库关闭数据库连接的方式,管理连接的最佳实践是什么。
在我使用的单个脚本中,我使用此逻辑实例化连接:
在单个Lambda调用中执行此操作非常有用。该脚本将退出(而不是超时),并且其连接被整齐地删除。
但是,当两个AWS Gateway调用调用相同的Lambda函数时,会出现问题。
看似状态,一切都被复制了?结果是一个陈旧的mysql对象,其中有一个非空连接,调用了.end()。在调用.end()之后,您无法将查询排入队列 - 因此第一次网关调用成功,但后续网关调用失败。
如果删除对mysql.end()的所有调用,连接问题就会消失,但是,Lambda脚本现在超时(30秒)而不是整齐地退出。
Lambda上的这种情况有什么解决方法?
答案 0 :(得分:0)
如果要手动关闭连接,请确保在重用容器时重新连接。 ie确保在调用end()后将连接设置为null,以便在重用时尝试重新连接。