我在兰卜达的AWS官方文档中找到了这个
如果Lambda函数访问VPC,则必须确保VPC具有足够的ENI容量来支持Lambda函数的规模要求。您可以使用以下公式大致确定ENI要求。 预计峰值并发执行*(内存( GB / 3GB) )
我理解这个公式背后的原因。我唯一的问题是:为什么是3GB?这个号码是从哪里来的?
发布于 2019-02-19 14:25:28
预测峰值并发执行×(内存以GB /3GB为单位)的公式是一个代理,用于回答“Lambda需要分配多少个m类(一般用途) EC2实例才能容纳这种大小的所需数量的容器”这个问题。
AWS使用与一般用途的亚马逊EC2实例类型相同的比率来分配与内存成比例的CPU功率,例如M3类型。 https://docs.aws.amazon.com/lambda/latest/dg/resource-model.html
这个比率是“相同的”因为M3..。或者非常类似的东西..。是Lambda实际使用的东西,在引擎盖下,用来存放容器。
M3.media是m3家族中最小的机器,拥有3.75GB的内存。因此,lambda需要提供的这种类型的EC2 VM的数量--因此所需的ENIs数量--大约为n×(m / 3GB)。这个实例可以承载(例如)大约2×1.5GB或24×128 MB或1×3.0GB容器,为VM中的操作/管理开销留出了一些空间。
可能涉及多少开销,以及Lambda在放置和选择容器时使用的算法,以及Lambda是否使用实例大小和规则的混合。都是Lambda黑匣子的一部分。逻辑将规定Lambda将从较小的实例开始,并随着并发性的增长而发展到更大的实例,因为更大的实例(在同一家族中)将允许更高的打包效率,而不需要性能损失(因为内存和CPU以固定的比例专用于每个容器),特别是对于大型和奇怪大小的容器。这个公式表明,接收ENIs的不是容器,而是实例.在大小为3GB的并发n下,Lambda将分配大约n×(m / 3GB)实例。
发布于 2019-02-19 10:21:15
3GB是单个lambda函数的最大内存分配。https://docs.aws.amazon.com/lambda/latest/dg/limits.html
https://stackoverflow.com/questions/54763625
复制相似问题