AWS всплеск продолжительности лямбда (не имеет отношения к холодному запуску) - PullRequest
2 голосов
/ 28 мая 2020

У меня есть несколько AWS лямбда-функций, но устранение неполадок предназначено для одной из них. эта функция Lambda запускается очередью сообщений, читает DynamoDB, обрабатывает, записывает DynamoDB. он вызывается до 10 запросов в секунду, и я установил параллелизм предоставления Lambda. Средняя продолжительность лямбды составляет 60 мс, что меня очень устраивает. Но каждый день происходит около 10 случаев, когда длительность лямбда-функции составляет от 1 секунды до 3 секунд.

Я помещаю журнал в свою Lambda, во время всплесков продолжительности чтение / запись (getitem / putitem) DynamoDB занимало более 1 секунды. Dynamodb настроен на исправление. это очень простая таблица, два столбца, идентификатор (автоматический номер) и строка json (около 1 КБ). Я пробовал Redis, но, как ни странно, все еще были шипы. Лямбда не ставится в VP C. Для подключения Dynamo задан тайм-аут HTTP 500, максимальное количество повторных попыток - 2.

Код для чтения DynamodDB :

code to read dynamodbo

Журнал для продолжительности :

log for duration

1 Ответ

1 голос
/ 29 мая 2020

При использовании подготовленного параллелизма служба Lambda будет поддерживать заданное количество базовых контейнеров в «теплом», чтобы минимизировать время запуска. Поскольку вы упомянули, что периодически сталкиваетесь с более высокой продолжительностью выполнения, обратитесь к приведенным ниже шагам отладки, которые вы можете выполнить:

  • Проверьте показатель «Параллельные выполнения» c для лямбда-функции по сравнению с Показатель «Длительность» c: если количество экземпляров функции, выполняющейся в определенное время, больше, чем установленный предоставленный параллелизм, то это будет означать, что у немногих из этих экземпляров были холодные запуски, вызывающие большую продолжительность.

  • Включите трассировку рентгеновских лучей для лямбда-функции , а также добавьте рентгеновские приборы в ваш код : Это даст полное представление о том, какая сеть вызов занимает слишком много времени и также дает вам продолжительность "инициализации" холодного старта (если есть).

...