【问题标题】:AWS Lambda and API Gateway - goes idle; needs to "wake up"/no response on first request?AWS Lambda 和 API Gateway - 闲置;需要“唤醒”/第一次请求没有响应?
【发布时间】:2016-07-16 02:12:40
【问题描述】:

我一直在修改 AWS Lambda 中的 nodejs 代码,由一些 API Gateway 端点调用。我注意到在没有任何 API Gateway 调用的情况下经过一定时间后,下一个 API Gateway 请求将超时。我将收到标准 Lambda 错误消息,说明函数超时。但是,触发我的 Lambda 的后续 HTTP 请求工作正常。

从表面上看,有些东西正在进入“空闲”模式,需要先充电,API Gateway-Lambda 请求才能正常工作。我考虑过设置一个 wget cron 来保持非空闲状态,但是有真正的解决方法吗?我怎样才能更好地了解正在发生的事情?

【问题讨论】:

  • 哪个/谁的超时被触发,超时是多长时间? (是的,在后台等待下一次调用 Lambda 函数的资源确实会在没有活动的大约 10 到 15 分钟内被解除分配,但是如果您这样做,您应该只会看到响应时间增加没有东西让他们活着。)
  • 我也注意到了这一点。处于非活动状态后,下一次通话大约需要 12 秒才能完成。否则我会在 100 到 900 毫秒之间

标签: amazon-web-services aws-lambda aws-api-gateway


【解决方案1】:

Lambda 在一段时间内保持工作人员处于活动状态,并且会(如您所见)在一段时间不活动后移除该工作人员。以下是our forums上发布的一组建议的副本:

一些建议:

  1. 让您的 Lambda 函数保持“温暖”状态。如果不经常调用它,您将产生开销“冷启动”成本,因为 Lambda 需要分配 资源来满足您的要求。有关详细信息,请参阅此帖子。
  2. 使用基于资源而不是基于角色的权限调用您的 Lambda 函数。这是为了避免 API Gateway 的开销 需要向 STS 发出assumeRole() 请求。基于资源 如果您在控制台中设置,调用是默认的。
  3. 如果合适,请考虑为您的 API 启用缓存。
  4. 您的 API 是否通过映射模板对请求或响应进行任何转换?这显然会产生线性开销 转换的复杂性。

请注意,假设其他选项都不适合您,#1 真的应该仅用作最后的手段

【讨论】:

    猜你喜欢
    • 2016-09-14
    • 1970-01-01
    • 2022-12-08
    • 2019-06-04
    • 2015-10-21
    • 2015-12-04
    • 2019-08-03
    • 2018-03-22
    • 2016-03-16
    相关资源
    最近更新 更多