【问题标题】:AWS Lambda having Intermittent 502 or 504 (Endpoint request timed out) errorAWS Lambda 出现间歇性 502 或 504(端点请求超时)错误
【发布时间】:2019-07-29 11:30:05
【问题描述】:

我在我的 AWS API 中遇到了一些奇怪的间歇性“502”和“504”问题

描述/流程:

  1. 有人调用我的“宠物”API。
  2. “pet”API 将触发“pet”lambda 函数,该函数将调用另一个 API,即“petDetails”。
  3. “petDetails”API 将触发“petDetails”lambda 函数。
  4. “petDetails”lambda 函数超时,原因不明。

petDetails Lambda 函数

console.log("Lambda-LibraryLoading");

const Promise = require("bluebird");
const AWS = require('aws-sdk');
var lambda = new AWS.Lambda();

console.log("Lambda-LibraryLoaded");


exports.handler = async function(event, context, callback) {

    console.log("Lambda-FunctionStart");

    console.log(JSON.stringify(event));
}

petDetails 登录 AWS Cloudwatch

START RequestId: b0d14e3b-3f2b-4094-8b6c-5bec1e034f35 Version: $LATEST

END RequestId: b0d14e3b-3f2b-4094-8b6c-5bec1e034f35

REPORT RequestId: b0d14e3b-3f2b-4094-8b6c-5bec1e034f35  Duration: 30030.19 ms   Billed Duration: 30000 ms Memory Size: 1536 MB  Max Memory Used: 88 MB  

【问题讨论】:

  • 启用 AWS X-ray,它可以帮助我们跟踪并查看哪些部分/组件/服务导致错误或受到限制。
  • 我也面临同样的问题。你是怎么解决的?

标签: aws-lambda aws-api-gateway


【解决方案1】:

lambda 函数的默认超时时间是 3 秒,您可以在 aws 控制台中增加它。 这个第一次执行花费太多时间的问题被称为cold start

你可以通过

避免500s
  1. 没有太多的顺序调用以减少请求时间
  2. 增加 lambda 函数的超时时间
  3. 使用运行状况检查保持 lambda 函数有效。

所有这些都只是解决方法,您的响应时间仍然很长,您应该重新审视您的设计。

【讨论】:

  • lambda的默认超时时间是6s。 30s 用于 API 网关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-01
  • 2018-03-21
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
  • 2020-11-16
  • 2012-08-13
相关资源
最近更新 更多