我有一个用Python语言编写的lambda函数,它使用了几个重量级依赖项(NumPy、pandas、goodtables等)。同时连接私有网络(用于访问Postgres RDS实例)
此函数执行一段时间(> 4-6小时)后,冷启动执行时间较长(16.2秒)
但是,如果我更新函数代码并再次调用它(在第一次执行后不久),冷启动执行时间会急剧减少(3秒)
如果我在不更新函数的情况下再次调用该函数,那么它是一个热启动,执行时间会进一步缩短(313ms)
我怀疑第一次冷启动(16.2秒)是Lambda设置弹性网卡访问私有网络资源,第二次冷启动(3秒)时弹性网卡被重用,避免了重新创建弹性网卡的时间。
我正在尝试优化这个函数的冷启动时间,希望它从头开始,看看完全冷启动(即无网卡+冷启动)的执行速度有多快。
有没有一种方法可以做到这一点并反复这样做呢?
发布于 2019-06-27 13:26:02
您可以打开内存,保存并重新设置它。
您还可以添加新的环境变量。
这迫使所有现有的热lambda被处理,并在下一次调用lambda时重新启动。
发布于 2019-03-17 21:34:00
您可以尝试发布lambda函数的新版本以进行测试,而不仅仅是修改代码。根据AWS的说法,每次发布lambda函数的新版本时,运行函数的所有容器都会被销毁,然后重新创建,这应该会强制完全冷启动。
发布于 2019-06-10 23:45:39
我也想知道同样的事情,虽然您可以在测试场景中将保留计数“节流”为零,但在生产场景中,这很可能不是一个可行的选择。为此,请查看Force Discard AWS Lambda Container或Restarting AWS lambda function to clear cache中的答案。
https://stackoverflow.com/questions/55206348
复制相似问题