首页 > 解决方案 > Lambda 未报告正确的内存使用情况

问题描述

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

如果我将 ram 提升到 192 或 256mb,它会在 1 秒内毫无问题地运行。它报告说消耗了相同数量的 ram,但现在的上限更高。如果我消耗的内存不到我分配的 50%,为什么我会看到执行停止?

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

标签: amazon-web-servicesaws-lambda

解决方案


配置 Lambda 函数 - AWS Lambda

您只需指定要为 Lambda 函数分配的内存量。AWS Lambda使用与通用 Amazon EC2 实例类型(例如 M3 类型)相同的比率分配与内存成比例的 CPU 功率。例如,如果您分配 256 MB 内存,您的 Lambda 函数将获得两倍于仅分配 128 MB 的 CPU 份额。

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

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

另请参阅:按比例分配 CPU 如何与 AWS Lambda 配合使用?


推荐阅读