如何在 VPC 上强制完全冷启动 AWS lambda 函数?

Vin*_*yak 9 performance-testing amazon-web-services aws-lambda

我有一个用 Python 编写的 lambda 函数,它使用几个重量级依赖项(NumPy、pandas、goodtables 等)并且还连接到 VPC(用于访问 Postgres RDS 实例)

此函数的冷启动执行时间在一段时间后(> 4-6 小时)执行时非常大(16.2 秒)

但是,如果我更新函数代码并再次调用它(第一次执行后不久),冷启动执行时间会急剧减少(3 秒)

如果我在不更新的情况下再次调用该函数,这是一个热启动,则执行时间会进一步缩短(313 毫秒)

我怀疑第一次冷启动(16.2 秒)是在 Lambda 设置 ENI 以访问 VPC 资源时,并且在第二次冷启动(3 秒)期间重复使用 ENI,因此可以避免重新创建 ENI 所花费的时间。

我正在尝试优化此功能的冷启动时间,并希望它从头开始,以查看在完全冷启动(即没有 ENI + 冷启动)时它的执行速度。

有没有办法做到这一点并反复执行?

小智 11

您可以切换内存,保存并再次将其重置。

您还可以添加新的环境变量。

这会强制处理所有现有的热 lambda,并在下次调用 lambda 时进行新的冷启动。

  • 感谢这个答案,在过去的一年里,我一直在使用添加或仅“修改”其中一个环境变量的方法。我通常只是创建一个新的,例如强制重启并增加计数器。 (2认同)
  • 我现在不知道它是否特定于 golang 运行时,但修改环境不会再导致冷启动。 (2认同)