代码之家  ›  专栏  ›  技术社区  ›  Johnathon Sullinger

Lambda未报告正确的内存使用情况

  •  0
  • Johnathon Sullinger  · 技术社区  · 6 年前

    我正在运行一个aspnetcore 2.1lambda,它分配了128mb的内存。当我运行Lambda时,它执行15秒(我的超时时间),然后失败 Task Timeout . 它报告说我在分配给它的128mb内存中消耗了56mb的内存。

    如果我把ram提高到192或256mb,那么它在1秒内不会出现问题。报告指出,同样数量的内存被消耗,但现在有了更高的上限。如果我消耗的内存不到我分配的内存的50%,为什么我会看到执行暂停?

    是整个容器的内存分配,而不仅仅是Lambda在其中执行吗?我假设我指定的ram是分配给在容器中运行的进程的。不是这样吗?如果这个内存分配是与容器中的其他资源共享的,Amazon是否发布了它们容器的内存使用情况,以便我可以更好地估计?

    1 回复  |  直到 6 年前
        1
  •  3
  •   John Rotenstein    6 年前

    Configuring Lambda Functions - AWS Lambda :

    只指定要为Lambda函数分配的内存量。AWS Lambda公司 分配与内存成比例的CPU功率 使用与通用Amazon EC2实例类型(如M3类型)相同的比率。例如,如果分配256 MB内存,Lambda函数将收到两倍于仅分配128 MB的CPU共享。

    因此,您的函数运行得更快,因为在为它们提供额外的内存时,您还提供了额外的CPU。

    所有分配的RAM和CPU只分配给Lambda函数。此功能不会被任何其他功能、容器、用户或网络共享或影响。

    另见: How does proportional CPU allocation work with AWS Lambda?