【问题标题】:How long will an AWS Lambda function stay loaded in memory without an active call?在没有活动调用的情况下,AWS Lambda 函数将在内存中保持加载多长时间?
【发布时间】:2016-06-16 05:51:10
【问题描述】:

我们将数据缓存在我们的 AWS lambda 函数内存中,知道在函数被删除以在我们的开发阶段不使用之前它通常会保留多长时间将非常有用。请注意,我专门讨论的是可以重用的容器数据。请看:https://aws.amazon.com/blogs/compute/container-reuse-in-lambda/

【问题讨论】:

    标签: amazon-web-services aws-sdk aws-lambda


    【解决方案1】:

    每次调用 lambda 函数都会创建一个唯一的函数实例。即使底层容器可能会持续一段时间以供重用 (http://docs.aws.amazon.com/lambda/latest/dg/lambda-introduction-function.html#topic3),但假设后续调用将重用先前调用的容器并期望数据持久性是不安全的。

    如果您在 lambda 函数中加载或创建跨调用所需的数据,则需要将其写入长期存储,无论是 S3 还是数据库或其他东西。每次调用该函数时,您都需要重新加载任何获取的数据。

    进行了编辑以阐明容器的重复使用。感谢 Rodrigo 和 Frederick Cheung 在 cmets 中添加的链接。

    【讨论】:

    • 同意,但是容器可以重复使用,而不是销毁。 aws.amazon.com/blogs/compute/container-reuse-in-lambda.
    • @RodrigoM 那篇博文是在预览期间写的。他们是否确认这种行为没有改变?无论如何,听起来即使容器被重用,也只适用于文件。代码仍然是全新的,因此之前运行时缓存在内存中的数据会丢失,最重要的是,“请记住,您不能依赖被重用的容器,因为创建一个新容器是 Lambda 的特权。”
    • 谢谢,是的,我当时看到它在预览中。所有当前文档似乎都引用了一些重用。但是是的,我希望即使重用也会重置内存,
    • docs.aws.amazon.com/lambda/latest/dg/… 特别指出如果容器被重用,内存中的数据会保留(他们给出的示例是不必在每次调用时重新建立数据库连接)
    • @FrederickCheung 感谢您指出这一点。我将编辑我的答案。
    猜你喜欢
    • 1970-01-01
    • 2016-01-05
    • 2011-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    相关资源
    最近更新 更多