我最近在质量检查会议中向教授提出了一个问题。由于当天提出的问题太多,所以我没有机会跟进该问题。
所以问题是: 人们(通常)如何绕过VPC与RDS交互中AWS Lambda的冷启动时间?
他的答案是: ENI是该过程的漫长部分,仅在容器的开头附加。因此,如果您每分钟左右在数据库上运行一次小型的top 1选择,那么它将保持连接打开状态,而不必附加ENI
所以我的后续问题是
我有多个lambda函数。如果事件来自cloudwatch,我应该在单个lambda函数上运行SELECT TOP 1,还是应该从cloudwatch ping我的所有lambda函数(并选择TOP 1)?
谢谢!
答案 0 :(得分:4)
问题不在于RDS,而在于Lambda设置。当您有一个“冷” lambda作业(一个未运行且未分配给任何容器实例的作业)时,整个ENI都会发生。当您尝试运行“冷” Lambda作业时,无论如何,您最终都会遇到相当大的延迟:AWS系统必须找到一个空实例,在其中复制您的作业,配置其他资源(ENI,路由表条目等)。 ),然后执行您的代码(如果您使用Java或C#,则执行延迟本身也可能会很高)。
为防止作业“冷”,您不必ping数据库。您只需确保定期且经常地调用该作业,即使它什么也不做(您可以在作业参数或环境中添加字段,以进行“不执行并退出”操作)。