Оптимальный способ выполнения задачи с привязкой к процессору в AWS Lambda

#amazon-web-services

#amazon-веб-сервисы

Вопрос:

Мне приходится обрабатывать много данных в моем лямбда-коде, и это вычисление может быть распараллелено. В настоящее время я использую однопоточный код Python и хочу оптимизировать его. Я думал о преобразовании его в многопоточный код Python, но в любом случае кажется, что у Amazon Lambda недостаточно ресурсов. Каков наилучший способ сделать это?

Комментарии:

1. «похоже, что у Amazon Lambda недостаточно ресурсов» Вы должны уточнить причину, по которой вы так думаете

2. Пожалуйста, предоставьте дополнительные технические характеристики!

Ответ №1:

AWS Lambda теперь поддерживает до 10 ГБ памяти и 6 ядер vCPU для функций Lambda

Если вы хотите выполнять связанные с процессором распараллеленные функции на лямбде, всегда помните об этом поведении ядра

  • Общее количество vCPU (которое соответствует оптимальному количеству потоков) определяется тем, сколько памяти вы выделили для этой лямбда-функции

Lambda распределяет мощность процессора пропорционально объему настроенной памяти. Память — это объем памяти, доступный для вашей лямбда-функции во время выполнения. Вы можете увеличить или уменьшить объем памяти и мощность процессора, выделяемые для вашей функции, используя параметр Памяти (МБ). Чтобы настроить память для вашей функции, установите значение от 128 МБ до 10 240 МБ с шагом в 1 МБ. Объем функции в 1769 МБ эквивалентен одному vCPU (один vCPU — секунда кредитов в секунду).

  • Lambda также строго ограничена максимальным временем, в течение которого она может быть запущена: 900 секунд (15 минут).

В зависимости от того, как было построено ваше приложение, вы можете повысить производительность, учитывая эти факторы

  • Он поддерживает многопоточную / многоядерную обработку. Инструкции на python можно найти здесь
  • Когда вы достигнете верхних пределов одного запуска Lambda, подумайте о том, как разбить работу на несколько лямбд, выполняющихся параллельно, если это возможно. Этот уровень горизонтального масштабирования — это то, в чем Lambda превосходит.