gpt4 book ai didi

amazon-web-services - Cognito 在调用 Lambda 函数时返回 UnexpectedLambdaException 超时错误

转载 作者:行者123 更新时间:2023-12-03 22:15:28 24 4
gpt4 key购买 nike

我第一次登录我的应用程序时,早上的第一件事,AWS Cognito 返回此错误:

{
"message": "arn:aws:lambda:us-east-1:XXXXXXXXXX:function:main-devryan-users_onCognitoLogin failed with error Socket timeout while invoking Lambda function.",
"code": "UnexpectedLambdaException",
"time": "2017-08-29T13:30:01.351Z",
"requestId": "1c04c982-8cbe-11e7-b9c9-a584e55a17f8",
"statusCode": 400,
"retryable": false,
"retryDelay": 96.636396268355
}

第二次,以及之后的每一天,一切都很好。

当我在 Cloudwatch 中检查我的 main-devryan-users_onCognitoLogin 函数的日志时,它在 2.3 秒内成功完成:
REPORT RequestId: 1f2d5a22-8cbe-11e7-ba74-5b21665a40c1  Duration: 2283.60 ms    Billed Duration: 2300 ms Memory Size: 128 MB    Max Memory Used: 51 MB  

之后的每一天,在一天的剩余时间里,我都看不到这个错误。我的 Lambda 设置为 30 秒后超时,但我知道 Cognito needs a response in 5 seconds .

我的 lambda 函数只是更新数据库中的上次登录时间。第一次很慢,因为创建到我的 RDS 数据库的连接大约需要 1.8 秒。我在该部分使用 Node JS 6 和 Sequelize 3。

我猜 Lambda 需要 2.7 秒才能将我的应用程序加载到容器中。

有人在这里有解决方案吗?我难住了。

最佳答案

这似乎是 lambda 冷启动时间问题。您可以尝试多种方法来优化它,例如:

  • 增加分配给您的函数的内存,这也会按比例增加 CPU。因为您的函数很少被调用,增加内存大小的额外成本将通过更快的冷启动时间和更低的计费持续时间来平衡。
  • 减少代码大小:更小的 .zip,删除 Node.js 中不必要的 require() 等。例如,如果您包含 Async 库只是为了删除嵌套回调,请考虑放弃以提高性能。
  • 关于amazon-web-services - Cognito 在调用 Lambda 函数时返回 UnexpectedLambdaException 超时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45941561/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com