2017-02-05 8 views
-1

В настоящее время я использую AWS лямбда, чтобы сделать короткое видео-кодирование с помощью ffmpeg. Если для моей lambda func (с текущим запущенным func) существует существующий контейнер, возможно ли, что если я снова вызову, он будет использовать этот существующий контейнер?Can AWS Lambda invoke гарантирует различные контейнеры

Это значительно увеличило бы время выполнения моей функции, так как я делал бы две или более тяжелые задачи процессора в контейнере, а не только один.

Если это правда, возможно ли запустить лямбда-func в новом контейнере?

Имеет смысл, что lambda гарантирует определенное распределение памяти для каждой функции, но если функция привязана к cpu, не будет ли контейнер потенциально узким местом, если он используется одновременно?

Я проверил https://aws.amazon.com/blogs/compute/container-reuse-in-lambda/.

Спасибо!

+1

Из того, что я понимаю, процессор и сетевые шкалы с объемом памяти, которое вы выбрали для своей функции, поэтому я думаю, что они не только гарантируют выделение памяти, но также и распределение ЦП и сети. Если сервер с контейнерами на нем занимает слишком много вычислительной мощности, я думаю, что они просто загружают баланс запросов и запускают контейнеры на других серверах. Я не знаю, как гарантировать, что Lambda не будет использовать новый контейнер для каждого запроса. – forrestmid

ответ

2

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

Если никакой существующий контейнер с загруженным в него кодом не может быть запущен, запускается новый контейнер («холодный старт»). Данный контейнер с загруженным в него кодом может быть повторно использован для последующих вызовов, но только если предыдущий вызов завершен («теплый старт»).

Вы не можете заставить Lambda начать холодный пуск больше, чем вы можете заставить его начать теплый старт. Он использует свой собственный алгоритм планирования, основываясь на его знаниях о вашей истории вызовов и ожидании вашей текущей и будущей рабочей нагрузки.

Назначенный процессор пропорционален сконфигурированному ОЗУ, поэтому просто настройте RAM соответственно.

См. this blog post для дополнительной информации о повторном использовании контейнеров в лямбда.