2

假设我有一个 AWS lambda 函数

**String lambdaFunction1() {
//some processing 
}**

假设 lambdaFunction1 在 SNS 主题中的任何新消息上触发。10 条 SNS 消息会触发多少个 JVM 实例?

AWS lambda 是在其自己的 JVM 中执行每个 lambda,还是重新利用相同的 JVM 实例。

4

1 回答 1

2

引用https://aws.amazon.com/de/blogs/compute/container-reuse-in-lambda/

假设您的函数完成,并且经过了一段时间,然后您再次调用它。Lambda 可能会重新创建一个新容器,在这种情况下,体验就像上面描述的一样。如果您更改代码,肯定会出现这种情况。

但是,如果您没有更改代码并且没有太多时间过去,Lambda 可能会重用以前的容器。这为双方提供了一些性能优势:Lambda 可以跳过 nodejs 语言初始化,而您可以跳过代码中的初始化。如果沙箱被重用,您上次写入 /tmp 的文件仍然存在。

请记住,您不能依赖于重复使用的容器,因为创建一个新容器是 Lambda 的特权。

如前所述:您不能依赖被重用的容器,但是当 AWS 认为它可以提高性能时,很有可能。

或者让它更简单:AWS 可能知道如何使您的 Lambda 尽可能高效,因此您可能不应该过度考虑这一点。

此外,虽然此博客针对的是 Node.js,但 AWS 似乎根据他们的这篇文章为 Java 做了类似的事情。

于 2018-03-01T09:20:48.177 回答