Что происходит, когда функция AWS Lambda зависает
Что происходит за кулисами, когда лямбда-функция AWS зависает?
То есть - многие документы Lambda Runtime Docs широко относятся к концепции замораживания или размораживания функции.
Среда выполнения и каждое расширение указывают на завершение, отправляя запрос Next API. Lambda замораживает среду выполнения, когда среда выполнения и каждое расширение завершены и нет ожидающих событий.
Насколько я понимаю, после инициализации функции Lambda (или "холодного запуска") и выполнения первого запроса на вызов, если нет других вызовов для обработки, среда выполнения функции "зависнет". Затем, когда для обработки требуется еще один вызов функции, среда выполнения функции «размораживается» почти мгновенно, без необходимости повторной инициализации/холодного запуска. Если замороженная функция слишком долго не вызывается, она отключится, и для следующего запроса на вызов потребуется холодный запуск.
Кто-нибудь знает, что это за заморозка? Насколько я понимаю, эти среды выполнения представляют собой виртуальные машины-фейерверки. Является ли это замораживанием чем-то, что поддерживает фейерверк, или это какое-то дополнительное волшебство, которое есть у веб-сервисов AWS, которое они хранят при себе? Иными словами, если у меня работает виртуальная машина Firecracker, могу ли я заморозить и разморозить ее?
1 ответ
Мы можем понять зависание, как после каждого выполнения AWS Lambda переводит экземпляр в спящий режим. Другими словами, экземпляр зависает (аналогично ноутбуку в спящем режиме). Виртуальный процессор выключен. Это освобождает ресурсы на рабочем узле. Накладные расходы от пробуждения такой функции незначительны.
Чтобы понять, как работает Firecracker, посмотрите это видео AWS re:Invent of 2019: AWS re:Invent 2019: инновации с открытым исходным кодом Firecracker (OPN402)
Также обратите внимание на эти посты: