amazon-web-services - VPC 中的 AWS Lambda 与数据库交互
问题描述
我最近在 QA 会议上向教授提出了一个问题。由于那天问的问题太多,我没有机会跟进这个问题。
所以问题是:人们(通常)如何绕过 VPC 中与 RDS 交互的 AWS Lambda 的冷启动时间?
他的回答是:作为流程较长部分的 ENI 仅附加在容器的开头。因此,如果您每分钟左右在数据库上运行一个小的 select top 1,它将保持连接打开,而不必附加 ENI
所以我的后续问题是,
我有多个 lambda 函数。我应该在单个 lambda 函数上运行 SELECT TOP 1,还是如果事件来自 cloudwatch,我应该从 cloudwatch ping 我的所有 lambda 函数(并选择 TOP 1)?
谢谢!
解决方案
问题不在于 RDS,而在于 Lambda 配置。当你有一个“冷”的 lambda 作业(一个没有运行并且没有分配给任何容器实例的)时,整个 ENI 事情就会发生。当您尝试运行“冷” Lambda 作业时,无论如何您最终都会遇到相当长的延迟:AWS 系统必须找到一个空实例,将您的作业复制到那里,预置额外的资源(ENI、路由表条目等)。 ) 然后才执行您的代码(如果您使用 Java 或 C#,执行延迟本身也可能相当高)。
为了防止您的工作变得“冷”,您不必 ping 数据库。您只需要确保作业被定期且经常调用,即使它什么都不做(您可以在作业参数或环境中添加一个字段来调整“什么都不做并退出”)。
推荐阅读
- vue.js - vue:使所有组件都可以访问用户名变量
- html - CSS断点不起作用
- html - 如何在 CSS 中的文本后面获得纯色背景?
- javascript - 以多于个位数的数字排序
- selenium-webdriver - 页面工厂如何验证元素?
- .net-core - 使用 .NET 核心 DLL 的 Electron 和 edge.js 会出现错误
- python - 如何使用python获取文件夹中的工作表ID数组
- amazon-web-services - VPC 中 AWS lambda 函数的外部调用
- sql - 比较同一表中的两列,反之亦然
- arrays - 要移除的最小块,以便在集水器中没有水被困住