【问题标题】:AWS Java Lambda JVM instancesAWS Java Lambda JVM 实例
【发布时间】:2018-03-01 09:14:25
【问题描述】:

假设我有一个 AWS lambda 函数

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

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

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

【问题讨论】:

  • 这对你有什么影响?
  • 1.这是为了了解它是如何工作的 2. 它有助于我们在访问 dB 时设计连接池
  • 以下博客文章很好地了解了 AWS 如何重用其容器:aws.amazon.com/de/blogs/compute/container-reuse-in-lambda 我不认为你可以说创建了多少 JVM 实例,老实说你也不应该担心这个。
  • 这是为了了解 AWS 如何维护 JVM,其次它有助于在 lambda 中设计 DB 连接池
  • 感谢 Ben 的周到回答。

标签: java amazon-web-services aws-lambda serverless-architecture


【解决方案1】:

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

假设你的函数完成了,一段时间过去了,然后你调用 再说一遍。 Lambda 可能会重新创建一个新容器,其中 case 的体验就像上面描述的一样。情况将如此 如果您更改代码,请确定。

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

记住,你不能依赖一个容器被重用,因为它是 Lambda 有权创建一个新的。

如前所述:您不能依赖被重用的容器,但是当 AWS 认为它会提高性能时,这是一个很好的机会。

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

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

【讨论】:

  • 还有一个关键要点是你的 lambda 不能保持状态,无论是在内存中还是在磁盘上,否则在同一个实例上重复执行会给你带来麻烦。
  • 好的,这意味着每个 lambda 实例都是一个容器。感谢您的洞察力
猜你喜欢
  • 2020-01-08
  • 2016-07-08
  • 2019-06-26
  • 2015-11-08
  • 2020-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多