我在客户端请求上运行了lambda @ edge。我正在将邮件放入SQS,由另一个lambda处理。
我的脚本在更新后的第一次运行时间非常长-经常经历5秒的硬超时,这不是很好的用户体验。
其中大部分正在加载AWS开发工具包,持续时间超过2.5秒
var timerstart = new Date();
var timercheck = new Date();
console.log("Time check: 0");
const AWS = require('aws-sdk');
timercheck = new Date();
console.log("Time check - AWS sdk loaded: ", timercheck - timerstart);
我也在加载https
const https = require('https');
第一次运行大约需要120毫秒。
许多后续运行完全在毫秒以下完成,很少超过5毫秒。
是否还有其他人遇到过这个问题-并希望找到解决该问题的方法?我没有通过googlefu找到任何东西。了解第一次运行和后续运行之间的差异将很有帮助。
疯狂的想法
@jogold导致一些有趣的阅读。
出于某种原因,我认为将需求放在出口之外会很有趣。
发件人:
'use strict';
exports.handler = async (event, context, callback) => {
const AWS = require('aws-sdk');
//... stuff
收件人:
'use strict';
const AWS = require('aws-sdk');
exports.handler = async (event, context, callback) => {
//... stuff
现在,在几次(非常确定的)冷启动过程中,第一次检查已降低到大约300ms。也许这只是其他所有人都知道的东西,而我对NodeJS的了解还有些不足,但是如果其他任何人来寻找Lambda @ Edge执行时间的问题,那就开始吧。
答案 0 :(得分:1)