Как заставить полный холодный запуск лямбда-функции AWS на VPC? - PullRequest
1 голос
/ 17 марта 2019

У меня есть лямбда-функция, написанная на Python, которая использует пару тяжелых зависимостей (NumPy, pandas, goodtables и т. Д.) И также подключена к VPC (для доступа к экземпляру Postgres RDS)

Время холодного запуска этой функции очень велико (16,2 секунды), когда она выполняется через некоторое время (> 4-6 часов)

Однако, если я обновлю код функции и вызову его во второй раз (вскоре после первого выполнения), время выполнения холодного запуска резко сократится (3 секунды)

Если я снова вызываю функцию, не обновляя ее, так что это теплый запуск, время выполнения уменьшается еще больше (313 мс)

Я подозреваю, что первый холодный запуск (16,2 секунды) происходит, когда Lambda устанавливает ENI для доступа к ресурсам VPC, и ENI используется повторно во время второго холодного запуска (3 секунды), поэтому время, необходимое для воссоздания ENI, составляет избегать.

Я пытаюсь оптимизировать время холодного запуска этой функции и хочу, чтобы она запускалась с нуля, чтобы увидеть, как быстро она может выполняться при запуске с полного холода (т.е. без ENI + холодный запуск).

Есть ли способ сделать это и делать это несколько раз?

Ответы [ 3 ]

0 голосов
/ 10 июня 2019

Мне было интересно то же самое, и хотя в сценарии тестирования вы могли «обнулить» зарезервированное количество счетчиков до нуля, это, скорее всего, не будет приемлемым вариантом в производственном сценарии.Для этого взгляните на ответы в Force Discard AWS Lambda Container или Перезапуск AWS лямбда-функции для очистки кэша .

0 голосов
/ 27 июня 2019

Вы можете переключать память вверх, сохранять и сбрасывать ее снова.

Вы также можете добавить новую переменную окружения.

Это заставляет все существующие теплые лямбды утилизировать и новуюхолодный старт при следующем вызове лямбды.

0 голосов
/ 17 марта 2019

Вместо того, чтобы просто изменять код, вы можете попробовать опубликовать новую версию вашей лямбда-функции для тестирования. Согласно AWS, каждый раз, когда вы публикуете новую версию своей лямбда-функции, все контейнеры, в которых выполняется ваша функция, уничтожаются, а затем воссоздаются, что должно привести к полному холодному запуску.

...