我使用Serverless Framework实现了一个AWS Lambda函数。该Lambda函数使用RDS和MongoDB。MongoDB端点运行时间约为500毫秒,但RDS在冷启动时需要12秒左右,在热启动时需要约3秒钟。
注意:我在此端点中使用Sequelize。
如何加快我的RDS Lambda端点速度?
注意:我在此端点中使用Sequelize。
如何加快我的RDS Lambda端点速度?
context.callbackWaitsForEmptyEventLoop = false;
callbackWaitsForEmptyEventLoop
您可以将此属性设置为false,以请求AWS Lambda在回调被调用后立即冻结进程,即使事件循环中有事件。 AWS Lambda将冻结进程,任何状态数据和Node.js事件循环中的事件(在Lambda函数下一次被调用时处理事件循环中剩余的事件,如果AWS Lambda选择使用冻结的进程)。
更多详细信息请阅读此文章。
您可以使用旧的context.done
函数立即返回,或更具体地使用context.succeed
/context.fail
。此函数仍可在Node 4上使用。
虽然它不会突然结束运行中的Lambda,但会向调用者(如API网关)返回响应,并在后台继续运行,如果需要的话,最多持续约15秒。
有趣的额外说明:如果您使用setTimeout
安排稍后运行的函数,则可以免费运行约15秒,因为Lambda仅保留对显式异步函数调用的收费。
setTimeout
延迟是一个未记录的小知识点。 - Rad Aragón