【发布时间】:2020-08-17 19:18:26
【问题描述】:
我有一个内置于 .NET Core 2.1 的 AWS Lambda 函数。由 SQS 队列触发。
此函数的最大内存为 512MB,超时时间为 2 分钟。
查看 CloudWatch 日志,我发现在执行一定次数后,使用的最大内存有所增加。见下图:
在执行一些操作后它会不断增加,从 217MB 到 218MB,之后到 219MB 等等。该函数多次运行,频率很高。
有人在 AWS Lambda 上遇到过这个问题吗?提前感谢您的帮助。
【问题讨论】:
-
你的程序的内存占用是否随时间增加主要取决于应用程序代码;尽管底层运行时也可能随时间变化并导致内存占用发生一些变化,但 AWS 不会经常更改它,所以我认为这不是你的问题。查看我在 prod 中使用的一个简单 lambda,自从代码停止更改以来,内存使用量一直保持不变。我会查看您的代码,以查找内存占用量可能随时间增长的地方 - 或者更有可能随着数据增长。您是在处理时删除 SQS 消息,还是在每次迭代时从旧执行中选择数据?
-
这是一个非常小的样本量,217/218/219 的值都大致相同。是否严格增加超过 100 次迭代?
-
@jarmod 是的,我在日志中查看了更多内容,并且还在不断增加。
-
@DanielFarrell 是的,我正在删除这些消息。而且我没有从旧的执行中选择数据。
标签: c# amazon-web-services .net-core aws-lambda