VPC 澄清中的 AWS Lambda ENI 限制
AWS Lambda ENI limitation in VPC clarification
我在 lambda 的 AWS 官方文档中找到了这个:
If your Lambda function accesses a VPC, you must make sure that your VPC has sufficient ENI capacity to support the scale requirements of your Lambda function. You can use the following formula to approximately determine the ENI requirements.
Projected peak concurrent executions * (Memory in GB / 3GB)
我理解这个公式背后的原因。我唯一的问题是:为什么是 3GB?这个数字是从哪里来的?
3GB 是单个 lambda 函数的最大内存分配。
https://docs.aws.amazon.com/lambda/latest/dg/limits.html
公式 预计峰值并发执行数 ×(以 GB 为单位的内存 / 3GB) 是对实际(但未说出)问题的答案的代理 "How many m-class (general purpose) EC2 instances will Lambda need to allocate in order to accommodate the required number of containers of this size?"
AWS Lambda allocates CPU power proportional to the memory by using the same ratio as a general purpose Amazon EC2 instance type, such as an M3 type.
https://docs.aws.amazon.com/lambda/latest/dg/resource-model.html
比率是 "the same" 因为 M3... 或与其非常相似的东西... Lambda 实际上在后台使用它来托管您的容器。
m3.medium 是 m3 系列中最小的机器,有 3.75GB 内存...所以 lambda 需要提供的这种类型的 EC2 VM 的数量——以及因此的数量需要的 ENI 是 大约 n × (m / 3GB)。此实例可以托管(例如)大约 2 × 1.5 GB 或 24 × 128 MB 或 1 × 3.0 GB 的容器,从而为 VM 内的 operational/management 开销留出一些空间。
可能涉及多少开销,以及 Lambda 在放置和选择容器时使用的算法,以及 Lambda 是否使用实例大小的混合以及在什么规则下...都是 Lambda 黑匣子的一部分。从逻辑上讲,Lambda 将从较小的实例开始,然后随着并发性的增长逐渐增加到较大的实例,因为较大的实例(在同一系列中)将允许更高的打包效率而不会影响性能(因为内存和 CPU 是专用的,以固定比例分配给每个容器),特别是对于大型和奇特尺寸的容器。这个公式表明接收 ENI 的不是 容器 而是 实例 ... 并且将有 大约 n × (m / 3GB) Lambda 在并发 n 下分配的实例,大小为 m GB。
我在 lambda 的 AWS 官方文档中找到了这个:
If your Lambda function accesses a VPC, you must make sure that your VPC has sufficient ENI capacity to support the scale requirements of your Lambda function. You can use the following formula to approximately determine the ENI requirements.
Projected peak concurrent executions * (Memory in GB / 3GB)
我理解这个公式背后的原因。我唯一的问题是:为什么是 3GB?这个数字是从哪里来的?
3GB 是单个 lambda 函数的最大内存分配。 https://docs.aws.amazon.com/lambda/latest/dg/limits.html
公式 预计峰值并发执行数 ×(以 GB 为单位的内存 / 3GB) 是对实际(但未说出)问题的答案的代理 "How many m-class (general purpose) EC2 instances will Lambda need to allocate in order to accommodate the required number of containers of this size?"
AWS Lambda allocates CPU power proportional to the memory by using the same ratio as a general purpose Amazon EC2 instance type, such as an M3 type.
https://docs.aws.amazon.com/lambda/latest/dg/resource-model.html
比率是 "the same" 因为 M3... 或与其非常相似的东西... Lambda 实际上在后台使用它来托管您的容器。
m3.medium 是 m3 系列中最小的机器,有 3.75GB 内存...所以 lambda 需要提供的这种类型的 EC2 VM 的数量——以及因此的数量需要的 ENI 是 大约 n × (m / 3GB)。此实例可以托管(例如)大约 2 × 1.5 GB 或 24 × 128 MB 或 1 × 3.0 GB 的容器,从而为 VM 内的 operational/management 开销留出一些空间。
可能涉及多少开销,以及 Lambda 在放置和选择容器时使用的算法,以及 Lambda 是否使用实例大小的混合以及在什么规则下...都是 Lambda 黑匣子的一部分。从逻辑上讲,Lambda 将从较小的实例开始,然后随着并发性的增长逐渐增加到较大的实例,因为较大的实例(在同一系列中)将允许更高的打包效率而不会影响性能(因为内存和 CPU 是专用的,以固定比例分配给每个容器),特别是对于大型和奇特尺寸的容器。这个公式表明接收 ENI 的不是 容器 而是 实例 ... 并且将有 大约 n × (m / 3GB) Lambda 在并发 n 下分配的实例,大小为 m GB。