[英]Long cold start on AWS Lambda python function
我已经使用 Zappa 将一个非常简单的烧瓶函数(即链接到 sql 查询并将它们转换为表的两个简单路由)转换为 Lambda 函数。 部署的函数大约为 20MB。 因为流量会非常低,所以我没有为我的功能使用任何预热机制。
该函数只需要 128MB 内存,在所有先前实例都已销毁的情况下运行时,冷启动大约为 16 秒。
这在直觉上似乎很长一段时间,我读过的内容(例如此处)表明不在VPC 中的 Python 函数对于冷启动具有相对较低的延迟。
如果我向函数添加内存,冷启动时间似乎线性减少。 这再次与我所读到的内容(例如,如上所示)相冲突,因为内存不是冷启动延迟的问题。 这是我的调用时间表:
我应该对这些结果感到惊讶还是我错过了什么?
谢谢
斯蒂芬
在调用处理程序函数之前,底层 CPU 不会受到限制(请参阅此 re:invent 视频)。 由于计费持续时间随着您增加内存而减少,因此有些东西告诉我您可能在处理程序中编写了函数定义,这自然会根据分配给函数的内存进行节流,从而花费更长的时间。
尝试描述处理程序之外的所有函数和静态变量,并尽量减少处理程序代码。 这将确保 Lambda 在调用受限制的处理程序函数之前,在处理程序之外花费更多时间,并具有完整的 CPU 容量。
对此有更多了解的最佳方法是我使用X 射线段分析您的函数代码,以查看函数在哪里花费了更多时间。 如果这些确实是冷启动,或者只是运行时间更长,这将描绘出更清晰的画面。
注意:冷启动持续时间不计入您的函数持续时间指标,而是在您启用 X-Ray 跟踪时显示为“初始持续时间”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.