【问题标题】:How AWS Lambda container reuse works?AWS Lambda 容器重用如何工作?
【发布时间】:2016-09-28 03:12:41
【问题描述】:

我已经浏览过this链接,(2014年12月发布),也参考thisthis

AWS Lambda 容器重用如何在 2016 年 5 月工作,您能否分享任何详细说明的具体链接?下面我有几个关于这个 AWS Lambda 容器重用的问题。

考虑一个用例

一个名为“processMessageLambda”的 Lambda 函数在它必须处理一条消息时接收请求,并且它从 POST REST API(来自 AWS API Gateway,与此 lambda 函数连接)接收到该消息。

现在这个“processMessageLambda”处理消息并将其存储到数据库中。

所以从逻辑上讲,它执行以下操作: 连接到数据库,存储消息并关闭连接。 (在正常情况下可以正常工作。)。

如果请求到达,比如每秒 10 个,并且每个 lambda 函数需要 30 秒来执行,那么它实际上会打开许多​​数据库连接。

Q1:我们可以在这种情况下使用“连接池”吗(例如boneCP)?因为对“processMessageLambda”的调用次数可能是每秒一百次或每秒十次?

(请参阅:simple example of container reuse - 它按它说的那样工作,但是会发生很多请求会到达说 - 每秒 10 个请求)

Q-2:如果可以使用连接池,那么这个aws lambda容器将如何被重用?

如果考虑一个案例:

让我们考虑这个 Lambda 函数接收的请求是每秒 10 个,在这种情况下 - 将创建 10 个不同的此 lambda 函数容器,或者将创建一个 lambda 函数容器,并将用于所有这 10 个请求?

Q-3:如果要创建 10 个不同的 lambda 函数容器,那么这意味着将使用 10 个数据库连接,那么这 10 个容器将在进一步的请求中重复使用?

Q-4:请您从开发人员的角度解释一下,aws lambda 容器重用实际上是如何工作的,或者开发人员在重用 aws lambda 容器时是如何考虑的? p>

Q-5:如果容器重用已经到位,开发人员需要如何维护变量的状态,以便开发人员知道哪个变量将被重用?

【问题讨论】:

    标签: amazon-web-services aws-lambda


    【解决方案1】:

    我构建和维护多个无服务器应用程序。要记住对我有帮助的一件事是:两个 Lambda 函数存在于不同的宇宙中。这立即回答了几个问题:

    1:不,您只能对每个 Lambda 进行连接池。如果您触发 100 个 Lambda 函数,则您有 100 个连接。

    2:-

    3:未指定容器重用背后的确切算法。下一个请求可能使用现有容器或新容器。没有办法说。阅读this 博客文章了解更多信息。

    4: imo 最好的方法是考虑容器根本不被重复使用,并添加规则以在需要时始终在暂存空间中使用唯一(随机)文件名(/tmp 文件夹)。当我试图保持连接打开以供重复使用时,连接超时然后被重新使用。这导致了数据库连接问题。现在我只是在每次调用期间打开和关闭。

    5:保持代码无状态(模块除外,切勿使用全局变量),如果需要将文件存储在暂存空间中,请始终使用唯一(随机)名称。这两条一般的经验法则使我免于许多问题。

    【讨论】:

    • 同意你的回答。
    • 所有好建议。不过,我很好奇是否曾经使用同一个容器同时解决两个 lambda 请求。
    • 同时:没有。只有当容器当前没有运行某些东西时,才能重新使用容器。
    • @LucHendriks 好!否则,我假设 lambdas 不会退出会出现问题,因为事件循环仍有要处理的事情。
    • 何时关闭 RDS 连接?
    猜你喜欢
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    • 1970-01-01
    • 2019-09-13
    • 2021-04-02
    • 1970-01-01
    相关资源
    最近更新 更多