增加Lambda函数的内存



我们有一个内存为128 MB的Lambda函数,

我们在生产中使用它,我们每天收到成千上万(3-4K)的请求。

Lambda通过一个API网关对外公开,该网关是区域的,类型是REST。

我可以清楚地捕捉API网关和Lambda函数的度量。

API Gateway Metrics:

Latency 2000 ms on an  Average,
Integration Latency 2300ms on an Average.

Lambda平均持续时间为3秒。

有时我们甚至遇到504网关超时异常,一天一次或两次。

我希望延迟减少如果我们增加内存大小,根据AWS博客

,如果我们将Lambda内存大小增加到1 GB(1024 MB)左右,504网关超时异常会消失吗?

或每天10 K个请求的理想内存大小是多少?

是否由于添加了额外的冷启动延迟而仅达到3000ms,或者当有可用实例时也会发生这种情况?

对于3000ms,您可以跳过各种各样的环和循环,以解决内存大小,预置并发性等问题。但我建议尝试改进代码/流程,使其运行如此长时间。我假设您的客户端也不热衷于调用在3000ms后响应的API ?

如果你可以摆脱它作为一个API,试着用SQS交换API网关,使它更像一个'worker'。

值得知道的是,增加lambda的RAM也会增加可用的CPU。因此,期望在很多情况下有更好的表现是合理的。事实上,将CPU增加一倍通常会使每毫秒的价格增加一倍,同时也会减少每2毫秒的调用时间。同样的价格,一半的延迟,划算!

然而

这些经验法则有时根本不适用。你的lambda到底在做什么?

  • 计算量大吗?然后增加CPU (,即。RAM(因为它们一起成长)肯定会有帮助
  • 发送大量连续http请求并等待远程服务响应?那么你没有改善任何与更多的内存

这可能值得进行基准测试,但正如其他人所说,在花更多钱在CPU上之前,您可能应该首先找到您的瓶颈。

要找到最适合您的RAM值,只需缓慢地增加它,并观察变化,直到找到满意的值。每天请求的数量并不重要,更重要的是对平均调用进行微调。

相关内容

  • 没有找到相关文章

最新更新