【问题标题】:AWS Lambda in VPC interacting with DatabaseVPC 中的 AWS Lambda 与数据库交互
【发布时间】:2018-12-27 01:34:27
【问题描述】:

我最近在 QA 会议上向教授提出了一个问题。由于当天问的问题太多,我没有机会跟进这个问题。

所以问题是: 人们(一般)如何绕过 VPC 中与 RDS 交互的 AWS Lambda 的冷启动时间?

他的回答是: ENI 是进程的长部分,仅附加在容器的开头。因此,如果您每分钟左右在数据库上运行一个小的 select top 1,它将保持连接打开,而不必附加 ENI

所以我的后续问题是,

我有多个 lambda 函数。我应该在单个 lambda 函数上运行 SELECT TOP 1,还是如果事件来自 cloudwatch,我应该从 cloudwatch ping 我的所有 lambda 函数(并选择 TOP 1)?

谢谢!

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-rds


    【解决方案1】:

    问题不在于 RDS,而在于 Lambda 配置。当你有一个“冷”的 lambda 作业(一个没有运行并且没有分配给任何容器实例的作业)时,整个 ENI 事情就会发生。当您尝试运行“冷” Lambda 作业时,无论如何您最终都会遇到相当长的延迟:AWS 系统必须找到一个空实例,将您的作业复制到那里,预置额外的资源(ENI、路由表条目等)。 ) 然后才执行您的代码(如果您使用 Java 或 C#,执行延迟本身也可能相当高)​​。

    为了防止您的工作变得“冷”,您不必 ping 数据库。您只需要确保作业被定期且足够频繁地调用,即使它什么都不做(您可以在作业参数或环境中添加一个字段来调整“什么都不做并退出”)。

    【讨论】:

    • 啊,明白了!如果我有 5 个 lambda 函数,那么我必须调用其中的 5 个以确保它们不会“冷”是这样吗?
    • 基本上,是的。此外,AWS Lambda 是尽力而为,因此即使是经常运行的函数也可能突然变得“冷”,例如,当它缓存的实例突然被删除以进行维护时。
    猜你喜欢
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 2016-08-03
    • 1970-01-01
    相关资源
    最近更新 更多