繁体   English   中英

AWS Lambda python 函数的长时间冷启动

[英]Long cold start on AWS Lambda python function

我已经使用 Zappa 将一个非常简单的烧瓶函数(即链接到 sql 查询并将它们转换为表的两个简单路由)转换为 Lambda 函数。 部署的函数大约为 20MB。 因为流量会非常低,所以我没有为我的功能使用任何预热机制。

该函数只需要 128MB 内存,在所有先前实例都已销毁的情况下运行时,冷启动大约为 16 秒。

这在直觉上似乎很长一段时间,我读过的内容(例如此处)表明不在VPC 中的 Python 函数对于冷启动具有相对较低的延迟。

如果我向函数添加内存,冷启动时间似乎线性减少。 这再次与我所读到的内容(例如如上所示)相冲突,因为内存不是冷启动延迟的问题。 这是我的调用时间表: 在此处输入图片说明

我应该对这些结果感到惊讶还是我错过了什么?

谢谢

斯蒂芬

我并不(如此)感到惊讶。 请记住,在 1GB 内存下,CPU 是单核的,并且 CPU 会随内存线性增长。

尝试使用此工具微调您的 Lambda 内存/功率和成本。 如果您不想提高内存,请尝试使用预置并发来减少冷启动。

PS:你确定那些时间是因为冷启动?

在调用处理程序函数之前,底层 CPU 不会受到限制(请参阅此 re:invent 视频)。 由于计费持续时间随着您增加内存而减少,因此有些东西告诉我您可能在处理程序中编写了函数定义,这自然会根据分配给函数的内存进行节流,从而花费更长的时间。

尝试描述处理程序之外的所有函数和静态变量,并尽量减少处理程序代码。 这将确保 Lambda 在调用受限制的处理程序函数之前,在处理程序之外花费更多时间,并具有完整的 CPU 容量。

对此有更多了解的最佳方法是我使用X 射线段分析您的函数代码,以查看函数在哪里花费了更多时间。 如果这些确实是冷启动,或者只是运行时间更长,这将描绘出更清晰的画面。

注意:冷启动持续时间不计入您的函数持续时间指标,而是在您启用 X-Ray 跟踪时显示为“初始持续时间”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM