#aws-lambda
#aws-lambda
Вопрос:
Мы используем AWS Lambda в течение некоторого времени и запустили другой процесс Lambda, но на этот раз мы заметили некоторое неожиданное поведение в отношении подхода к масштабированию Lambda и сообщили о частоте ошибок. У нас есть настройка SQS -> Lambda с максимальным параллелизмом 200, и в очереди находится около 100 тысяч сообщений, на обработку каждого из которых в среднем уходит около 3 секунд. Сбой лямбды составляет около 5-10% в зависимости от консоли, и это ожидается при текущем подходе. К сожалению, мы видели, что Lambda выполняется только при максимальном количестве одновременных выполнений 45-50 или около того. Мы скорректировали память, время ожидания, настройки очереди и т.д., Ничего не сработало. Наконец, у нас был Lambda always exit successful и, конечно же, теперь он мгновенно достиг максимального параллелизма. Почему это? Нигде в документации не упоминается, что частота ошибок связана с параллелизмом или масштабированием. Кто-нибудь еще сталкивался с этим? Это отчасти имеет смысл как своего рода безопасная защита для конечного пользователя, но мы просто этого не ожидали. Мы корректируем наш текущий подход для учета этой теории.
tldr: Lambda имеет максимальный параллелизм 200 и запускается SQS, когда частота ошибок составляет 5-10%, она достигает примерно 45-50 одновременных выполнений, когда частота ошибок равна 0%, она достигает полных 200 одновременных выполнений Почему?
Комментарии:
1. Вероятно, это связано с повторными попытками. Что вызывает «сбои»? Смотрите: Управление параллелизмом — AWS Lambda
Ответ №1:
Да, это так. Ранее это нигде не было задокументировано, но я тоже испытывал подобное поведение.
Подтверждено здесь: https://aws.amazon.com/premiumsupport/knowledge-center/lambda-sqs-scaling /
Если при попытке Lambda вызвать вашу функцию возникают какие-либо ошибки, служба предотвращает масштабирование вашей функции, чтобы предотвратить ошибки при масштабировании. Как только ошибки прекращаются, Lambda продолжает масштабировать вашу функцию. Это увеличивает количество дополнительных одновременных вызовов на 60 в минуту, если ваша учетная запись не находится на уровне или вблизи квоты службы для масштабирования или пакетного параллелизма в регионе. Ваша функция может масштабироваться максимум до 1000 одновременных вызовов.
Ответ №2:
Как прокомментировал Джон Ротенштейн, это, вероятно, связано с повторными попытками.
Из документации по повторным попыткам AWS Lambda следует, что триггеры вашего сервиса AWS SQS настроены на повторную попытку при ошибке.
Это также описано в сообщении в блоге: https://dev.to/piczmar_0/error-handling-in-aws-lambda-trigger-by-sqs-events-3amp