Лямбда не сообщает о правильном использовании памяти
Я использую Aspnetcore 2.1 Lambda с выделенными 128 МБ оперативной памяти. Когда я запускаю Lambda, он выполняется в течение 15 секунд (мой период ожидания), а затем завершается с ошибкой Task Timeout
, Он сообщает, что я израсходовал 56 МБ памяти из 128 МБ оперативной памяти, выделенной для него.
Если я подниму оперативную память до 192 или 256 МБ, она будет работать без проблем менее чем за 1 секунду. Он сообщает, что было израсходовано такое же количество баранов, но теперь с более высоким потолком. Если я потребляю менее 50% оперативной памяти, которую я выделил, почему я вижу, как казни прекращаются?
Распределение памяти для всего контейнера, а не только для Lambda, выполняется в нем? Я предполагал, что я указываю оперативную память, которая будет выделена для моего процесса для запуска в контейнере. Разве это не так? Если это распределение памяти используется совместно с другими ресурсами в контейнере, публикует ли Amazon использование памяти своими контейнерами, чтобы я мог оценить лучше?
1 ответ
Из настройки лямбда-функций - AWS Lambda:
Вы указываете только объем памяти, который вы хотите выделить для вашей лямбда-функции. AWS Lambda распределяет мощность процессора, пропорциональную памяти, используя то же соотношение, что и тип экземпляра Amazon EC2 общего назначения, например тип M3. Например, если вы выделите 256 МБ памяти, ваша лямбда-функция получит в два раза больше ресурсов ЦП, чем если бы вы выделили только 128 МБ.
Таким образом, ваши функции работали быстрее, потому что, предоставляя им дополнительную память, вы также обеспечивали дополнительный процессор.
Все выделенные ОЗУ и ЦП назначаются только вашей функции Lambda. Эта функция не будет использоваться совместно с другими функциями, контейнерами, пользователями или сетями.
См. Также: Как пропорциональное распределение ЦП работает с AWS Lambda?