解冻Lambda函数不会减少延迟

时间:2017-08-24 22:50:35

标签: node.js aws-lambda serverless-framework

我使用serverless-warmup-plugin运行一个每10分钟调用一次Lambda函数的cron。 Lambda函数的代码如下所示:

exports.lambda = (event, context, callback) => {
    if (event.source === 'serverless-plugin-warmup') {
        console.log('Thawing lambda...')
        callback(null, 'Lambda is warm!')
    } else {
        // ... logic for the lambda function
    }
}

这适用于纸张,但在实践中,即使它每10分钟成功调用一次,它也不会使Lambda函数保持温暖。

当通过不同的事件源(cron除外)调用Lambda时,代码执行大约需要2-3秒。一旦它以这种方式执行,Lambda实际上会升温并在400ms之后开始响应。它会保持一段时间的温暖。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

正如official documentation所述:

  

注意

     

编写Lambda函数代码时,请不要假设AWS Lambda始终重用容器,因为AWS Lambda可能选择不重用容器。根据各种其他因素,AWS Lambda可能只是创建一个新容器,而不是重用现有容器。

尝试保持一个Lambda容器似乎是一个“糟糕的架构设计”,但是,显然这是一个正常的情况,当另一个事件源触发一个新容器时,你的温暖容器没有被使用。