AWS Lamba在使用RDS时性能较差
我已经使用无服务器框架实现了AWS Lambda函数。 该Lambda函数正在使用RDS和MongoDB。 MongoDB端点运行大约500ms,但RDS在12秒(冷启动)和〜3秒(热启动)运行。
注意:我在这个端点使用了Sequelize。
如何加速我的RDS Lambda端点?
在函数模块定义之后的第一行中,添加以下行
context.callbackWaitsForEmptyEventLoop = false;
callbackWaitsForEmptyEventLoop
- 默认值是true
- 仅用于修改callback的默认行为。
您可以将此属性设置为false以请求AWS Lambda在调用callback后立即冻结该进程,即使事件循环中有事件。 AWS Lambda将冻结进程,Node.js事件循环中的任何状态数据和事件(下一次调用Lambda函数时处理事件循环中的所有剩余事件,以及AWS Lambdaselect使用冻结进程)
更多的细节阅读这篇文章
您可以使用旧的context.done
函数立即返回或更具体地返回context.succeed
/ context.fail
。 该function在节点4上仍然可用。
虽然它不会突然结束正在运行的Lambda,但会响应调用者(如API网关)并在后台运行(如果需要),最多只需15秒。
有趣的额外:如果你使用setTimeout
安排一个稍后运行的函数,那么你可以免费运行setTimeout
秒,因为Lambda只支持明确的asynchronous函数调用。