Наши API Gateway и Lambdas регулярно используются и работают в большинстве случаев просто отлично, однако время от времени мы наблюдаем всплеск ошибок 5XX, что вызывает скачок жалоб клиентов и другие проблемы.Когда я просматриваю логи за это время, я вижу поток следующей ошибки:
Execution failed due to configuration error: Malformed Lambda proxy response
Других подробностей кроме этого нет.Через 10 или 15 минут он уйдет вместе с жалобами клиентов.Я читал, что это может произойти, если вы превысите свой лимит параллелизма, но, глядя на панель мониторинга, не похоже, чтобы мы когда-либо превышали 150 одновременных выполнений.
Сами вызовы, на которые выполняются вызовы, также работают последовательноКроме этих случайных всплесков в 5XX.
Что еще может быть причиной этого несоответствия?
Просматривая журналы, чтобы попытаться выяснить это.Я сделал журналы максимально подробными, и там ничего нет.У нас будет нормальный вызов с ответом об успешном завершении, а через несколько минут эта ошибка появится без других журналов, только одна ошибка.Через несколько минут после этого у нас появляются журналы для следующего успешного вызова.
10:25:42 Successfully completed execution
10:25:42 Method completed with status: 200
10:42:01 Execution failed due to configuration error: Malformed Lambda
proxy response
12:21:21 Successfully completed execution
12:21:21 Method completed with status: 200
Запись в журнал не может идти дальше, потому что лямбды даже не выполняются.Таким образом, у нас нет подробных данных о полезной нагрузке, отправленной на него, или о какой-либо внутренней регистрации для вызова и т. Д. Он просто сразу дает сбой на уровне шлюза API.
Редактировать: Мы все еще получаем эти всплески, но мы работаем надрасщепляя лямбды больше.У нас есть приложение ExpressJS, которое обрабатывает львиную долю всех запросов.Таким образом, мы разбиваем больше, особенно запросы с большим трафиком, на их собственные лямбды, чтобы посмотреть, поможет ли это.В случае, если существует проблема, из-за которой контейнер слишком перегружен или истекает время ожидания, потому что он обрабатывает долго выполняющиеся запросы (которые занимают более 20 с), а также блокируется запросами, которые заканчиваются <500 мс. </p>
ДругоеТеория заключается в том, что, возможно, существует ошибка, которая запускается где-то, что убивает процесс или что-то еще, и этот контейнер является плохим, пока он не будет уничтожен и возрожден.Как эти всплески, а затем уходят через несколько минут.Таким образом, увеличение количества лямбд должно уменьшить вероятность ошибок от одного каскадирования и повлиять на все остальные запросы.
Мы также увеличиваем ресурсы лямбда-функции, чтобы посмотреть, поможет ли это в обработке такого большого количества запросов.