Измерение продолжительности запуска AWS Lambda

В настоящее время я собираю и регистрирую показатели производительности моей функции, и единственная метрика, которую мне не хватает, — это продолжительность запуска (моя функция довольно велика, около 35 МБ в сжатом виде). Мне действительно нужно знать, сколько времени занимает запуск и, что еще более важно, как часто это происходит (у меня такое ощущение, что это происходит намного чаще, так как мой лимит одновременных выполнений был увеличен).

Есть ли способ получить эту информацию в Lambda? Или может кто-нибудь подумать о возможности передать текущую временную метку вызова API-шлюза, например, через шаблон сопоставления, чтобы я мог вычислить время запуска самостоятельно?


person birnbaum    schedule 09.03.2016    source источник
comment
Cloud Trail должен быть в состоянии ответить на вопрос, как часто   -  person Vorsprung    schedule 09.03.2016


Ответы (2)


Прямо сейчас нет детерминированного способа измерить время запуска функции. В настоящее время лучше всего включить журналы CloudWatch для вашего API и обрабатывать временные метки событий журнала. Должно быть довольно очевидно, какие вызовы запускают инициализацию функции, поскольку дельта времени между событиями до и после вызова Lambda будет значительно выше среднего. Основываясь на этом, вы можете создать некоторую статистику по соотношению инициализаций и среднему времени инициализации.

Спасибо, Райан

person RyanG    schedule 09.03.2016
comment
Хорошо, спасибо! Я уже делаю это, и это работает нормально. Мне просто было любопытно, можно ли как-то получить эту информацию в Lambda, потому что тогда я мог бы очень легко визуализировать ее как метрику. Было бы очень здорово иметь текущую метку времени в наборе переменных в API Gateway! - person birnbaum; 10.03.2016
comment
Мы добавим это в наш бэклог - спасибо! Если вы не возражаете против включения задержек на стороне клиента, вы всегда можете сгенерировать метку времени на стороне клиента и проксировать ее через Lambda. - person RyanG; 11.03.2016

AWS недавно представила Init Duration в журналах cloudwatch вместе с журналом Billed Duration для измерения лямбда-выражений холодного запуска до начала фактического вызова.

Из раздела "Отчет" в Lambda Log Stream

Вот пример журнала одной из моих лямбда-

Duration: 1200.50 ms 
Billed Duration: 1300 ms 
Memory Size: 3008 MB 
Max Memory Used: 308 MB 
Init Duration: 4317.73 ms
person dr.death2609    schedule 04.10.2019
comment
Это дословно? Насколько ваша продолжительность короче, чем ваша продолжительность инициализации? - person bmm6o; 31.12.2019
comment
@bmm6o stackoverflow.com/questions/55412624/. Init Duration — это время, затрачиваемое AWS на выделение контейнеров, памяти, извлечение образа и вызов функции обработчика. Таким образом, с вас не будет взиматься плата за длительность инициализации. Init Duration предназначен для тех целей, где вам нужно понимать, что это дополнительные накладные расходы на вашу производительность на запрос холодного запуска. Примечание. Инициализация соединения с БД и другая глобальная инициализация оплачиваются по продолжительности. - person dr.death2609; 02.01.2020