Я думаю, что одной из причин, по которой я получил 50 экземпляров журнала, является баланс между временем задержки последнего процесса лямбда-функции и временем следующего холодного запуска.Параметр конфигурации Concurrency не говорит мне, что он мгновенно запустит 1000 незарезервированных параллельных аккаунтов.Он получает 1000 запросов, но сразу же освобождается для следующего запроса, поэтому нет необходимости холодного запуска другого экземпляра.Но я не уверен, правда это или нет.
Другая причина, которую я могу подтвердить, - это ограничение по умолчанию для AWS.
"У AWS Lambda по умолчанию установлен дроссель безопасности 100 одновременных выполнений для каждой учетной записи на регион. Если вы хотите подать запрос на увеличение скорости 100 одновременных выполнений, вы можете посетить наш Центр поддержки ..."
Я не нашел официальный документ, но нашел ограничение вручную:
Когда я установил параллелизм на 100, запустил два сценария вызова на локальной машине, каждый изСкрипты отправляют 500 вызовов одновременно.Он получит журнал результатов в очереди.Число экземпляров в журнале будет постепенно увеличиваться до 100 экземпляров, а не 50 экземпляров, что является результатом одного сценария вызова.
Но что, если параллелизм равен 100, но я запускаю три сценария вызова?Будет ли запуск 150 экземпляров?Нет, это выдаст ошибку TooManyRequestsException
.
Этот тест не является строгим, все еще расследуется.Хотя это и не серьезная проблема с производством, я действительно хочу понять, почему эта проблема возникла.
- ОБНОВЛЕНИЕ -
В: Есть ли предел дляколичество функций AWS Lambda, которые я могу выполнить одновременно?
Нет.AWS Lambda предназначена для параллельного запуска многих экземпляров ваших функций.Однако в AWS Lambda по умолчанию установлен дроссель безопасности - 100 одновременных выполнений на учетную запись в каждом регионе.Если вы хотите подать запрос на увеличение количества одновременных казней, равных 100, вы можете посетить наш Центр поддержки, нажать «Открыть новое дело» и подать запрос на увеличение лимита обслуживания.
В: Что произойдет, если мойУчетная запись превышает ограничение газа по умолчанию при одновременном выполнении?
При превышении ограничения газа функции AWS Lambda, вызываемые синхронно, возвращают ошибку регулирования (код ошибки 429).Лямбда-функции, вызываемые асинхронно, могут поглощать разумные всплески трафика в течение примерно 15-30 минут, после чего входящие события будут отклоняться при регулировании.В случае, если функция Lambda вызывается в ответ на события Amazon S3, события, отклоненные AWS Lambda, могут сохраняться и повторяться S3 в течение 24 часов.События из потоков Amazon Kinesis и потоков Amazon DynamoDB повторяются до тех пор, пока функция Lambda не завершится успешно или не истечет срок действия данных.Amazon Kinesis и Amazon DynamoDB Streams хранят данные в течение 24 часов.
--- ОБНОВЛЕНИЕ ---
Как я и Матус Дубрава упомянули, яуправлял сложностью лямбда-функции, чтобы контролировать время выполнения функции.Метрики показаны ниже:
Ясно, что мы видим, что есть взаимосвязь между Duration (300k Max) и ConcurrentExecutions (я установил максимальный параллелизм на 100).