node.js - 来自 Lambda 的 REST 调用通常非常慢
问题描述
我不确定这里的问题是正确的还是更适合超级用户。但是,由于我认为我的代码可能做错了什么,所以我在这里尝试一下。
我创建了一个小型代理 lambda 函数来调用我的 REST API。我正在使用 node.js 和请求包。这是我的代码:
exports.handler = function (request, context) {
require('request').post({url: 'https://example.com/foo/bar', json:request, timeout:1000}, function(error, response, body){
if(error) {
console.log("Something went wrong:\n" + JSON.stringify(error, null, 2));
context.succeed({failed:true})
} else {
console.log("Returning remote response:\n" + JSON.stringify(body, null, 2));
context.succeed(body);
}
});
console.log("Forwarding request to own backend:\n" + JSON.stringify(request, null, 2));
};
这确实没什么特别的,但是我认为应该在 1000 毫秒后取消请求。但是我经常看到由于 3000 毫秒的超时而取消了执行。我将它增加到 30000 毫秒,它开始工作。有时 lambda 在 500 毫秒内执行,但下一次需要 3100 毫秒。我不明白为什么会这样。请赐教。
解决方案
它可能来自称为冷启动的正常行为
使用 AWS Lambda 时,您的函数容器的预置可能需要 5 秒以上的时间。这使得无法保证对 API Gateway、DynamoDB、CloudWatch、S3 等事件的响应小于 1 秒。
这是一篇来自无服务器的好文章,关于它是什么以及如何处理它。
推荐阅读
- php - Laravel 7.6 调用未定义的方法 Illuminate\Database\Eloquent\Builder::appends()
- python - 从字符串中提取单词
- python - YELP API 代码应返回错误 401,但返回的是错误 400
- r-markdown - Knitr 没有正确对齐标题和表格
- python - Python - 用 LU 分解求解线性方程组的数值问题
- mysql - 如何解决此 MySQL Foreign Key Constraint Fails 错误?数据看起来正确
- laravel - 引导模式在 iOS 上不起作用 - 仅显示灰色背景
- sapui5 - 此类 AppComponent 已弃用,请改用“sap.fe.core.AppComponent”
- php - 如何正确提交表单数据到SQL数据库?
- python - 从python脚本向arduino发送数组(包含一组坐标)的最佳方法是什么?