我正在运行一个aspnetcore 2.1 Lambda,其中分配了128mb的ram。当我运行Lambda时,它将执行15秒(我的超时时间),然后失败,并显示Task Timeout
。它报告说我在分配给它的128mb内存中消耗了56mb内存。
如果我将撞锤撞到192或256mb,它会在1秒内无故障运行。它报告说消耗了相同数量的公羊,但现在最高。如果我消耗的内存不到分配的内存的50%,为什么我会看到处决死机?
是否为整个容器分配了内存,而不仅仅是在其中执行的Lambda?我以为我指定的内存是分配给我的进程以在容器内运行的内存。不是吗?如果此内存分配与容器中的其他资源共享,那么Amazon是否会发布其容器的内存使用情况,以便我做出更好的估算?
答案 0 :(得分:3)
来自Configuring Lambda Functions - AWS Lambda:
您仅指定要为Lambda函数分配的内存量。 AWS Lambda通过使用与通用Amazon EC2实例类型(例如M3类型)相同的比率,分配与内存成比例的CPU功能。例如,如果分配256 MB内存,则Lambda函数将获得比仅分配128 MB两倍的CPU份额。
因此,您的函数运行速度更快,因为在为它们提供额外的内存时,您还提供了额外的CPU。
所有分配的RAM和CPU仅分配给Lambda函数。该功能将不会共享,也不会受到任何其他功能,容器,用户或网络的影响。
另请参阅:How does proportional CPU allocation work with AWS Lambda?