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

时间:2019-03-17 11:05:38

标签: amazon-web-services aws-lambda performance-testing

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

一段时间(> 4-6小时)执行后,此功能的冷启动执行时间很长(16.2秒)

但是,如果我更新功能代码并第二次调用(第一次执行后不久),冷启动执行时间将大大减少(3秒)

如果我再次调用该函数而不对其进行更新,因此它是一个热启动,则执行时间将进一步减少(313毫秒)

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

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

有没有办法重复做一次?

3 个答案:

答案 0 :(得分:0)

您不仅可以修改代码,还可以尝试发布lambda函数的新版本以进行测试。根据AWS的说法,每次发布lambda函数的新版本时,运行该函数的所有容器都会被销毁然后重新创建,这将强制完全冷启动。

答案 1 :(得分:0)

我在想同样的事情,尽管您可以在测试场景中将保留的计数“调低”为零,但在生产环境中这很可能不是一个可行的选择。为此,请查看Force Discard AWS Lambda ContainerRestarting AWS lambda function to clear cache中的答案。

答案 2 :(得分:0)

您可以向上切换内存,保存并再次重置。

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

这将强制处置所有现有的温暖的lambda,并在下次调用lambda时重新启动新的冷启动。