VPC 澄清中的 AWS Lambda ENI 限制

Vla*_*nko 3 cloud networking amazon-web-services aws-lambda aws-vpc

我在lambda的 AWS 官方文档中找到了这个:

如果您的 Lambda 函数访问 VPC,您必须确保您的 VPC 具有足够的 ENI 容量来支持您的 Lambda 函数的规模要求。您可以使用以下公式来大致确定 ENI 要求。

预计的峰值并发执行次数 *(以 GB/3GB 为单位的内存)

我理解这个公式背后的原因。我唯一的问题是:为什么是 3GB?这个数字从何而来?

Mic*_*bot 5

公式预计峰值并发执行数 ×(内存,GB / 3GB)是对实际(但未说出口)问题“Lambda 需要分配多少 m 级(通用)EC2 实例以容纳需要多少这种尺寸的容器?”

AWS Lambda 使用与通用 Amazon EC2 实例类型(例如 M3 类型)相同的比率来分配与内存成比例的 CPU 功率。

https://docs.aws.amazon.com/lambda/latest/dg/resource-model.html

这个比率是“相同的”,因为 M3 ......或与它非常相似的东西......是 Lambda 在幕后实际使用的东西,用于托管您的容器。

m3.medium 是 m3 系列中最小的机器,有 3.75GB 的 RAM……所以 lambda 需要配置的这种类型的 EC2 VM 的数量——以及需要的 ENI 的数量——大约是n × (m / 3GB)。该实例可以托管(例如)大约 2 × 1.5 GB 或 24 × 128 MB 或 1 × 3.0 GB 的容器,从而为 VM 内的操作/管理开销留出一些空间。

可能涉及多少开销,Lambda 在放置和选择容器时使用的算法,Lambda 是否混合使用实例大小以及遵循什么规则……都是 Lambda 黑匣子的一部分。逻辑将规定 Lambda 将从较小的实例开始,随着并发性的增长逐渐发展到较大的实例,因为较大的实例(在同一系列中)将允许更高的打包效率而不会降低性能(因为内存和 CPU 是专用的,按固定比率, 到每个容器),特别是对于大型和奇怪尺寸的容器。这个公式表明,接收 ENI 的不是容器,而是实例......并且在并发情况下,Lambda 将分配大约n × (m / 3GB) 个实例n大小为m GB。