Лямбда-функция возвращает тайм-аут даже после получения ответа

У нас есть лямбда-функция AWS на основе Java, которая вызывается через API Gateway примерно 10-15 раз в день, что, по моему мнению, очень редко.

Конфигурация Lambda имеет память 1024 МБ и ограничение времени ожидания 15 секунд. Но с прошлой недели или около того лямбда-функция истекает даже после получения ответа. И это явление не единообразно. Это спорадически. И в конечном итоге выполняется нормально через некоторое время.

Мы попытались оптимизировать код, и его выполнение не должно занимать более ~8 секунд. В надежде найти решение для этого. Дайте мне знать, если потребуется дополнительная информация.

Заранее спасибо.

Проблема аналогична этому вопросу: время ожидания функции AWS Lambda

Единственная разница заключается в используемой технологии: в приведенном выше вопросе использовался nodeJS, а мы используем Java.

--Update: Еще одна вещь, которую я заметил, это когда API нажимается после долгого бездействия, для его выполнения требуется больше времени, чем когда вы нажимаете его последовательно. Я проверил журналы, и когда я нажал его в первый раз, выполнение заняло примерно 7-8 секунд, и сразу после 2 последовательных попаданий время отклика сократилось до 2 секунд. Очень странно...


person User-8017771    schedule 08.01.2018    source источник
comment
время, которое вы говорите, относится только к времени, затрачиваемому лямбда-выражением или всем вашим API?   -  person Nikhil Pareek    schedule 08.01.2018
comment
@NikhilPareek Просто лямбда .. Не API   -  person User-8017771    schedule 08.01.2018


Ответы (1)


Похоже, у вас возникли проблемы, связанные с прогревом на шлюзе lambda/api. Некоторые люди уже жалуются на это.

Есть несколько обходных путей, которые вы можете использовать, чтобы поддерживать лямбду в тепле: >например триггеры.

Я проверил журналы, и когда я нажал его в первый раз, выполнение заняло примерно 7-8 секунд, и сразу после 2 последовательных попаданий время отклика сократилось до 2 секунд. Очень странно...

Это потому, что у вас есть теплая лямбда, поэтому нет необходимости создавать новую.

person dege    schedule 08.01.2018
comment
Да, это может быть связано с разогревом лямбда-функций. Тем не менее, моя 1-я проблема: Но с прошлой недели или около того лямбда-функция истекает даже после получения ответа. И это явление не единообразно. Это спорадически. И в конечном итоге через какое-то время выполняется нормально. Есть идеи, почему это происходит? - person User-8017771; 08.01.2018
comment
tbh, это странный сценарий, вы заметили время, когда тайм-аут регистрируется? и какую память вы выбрали для лямбды? - person dege; 08.01.2018
comment
Выбранная память составляет 1024 МБ. Таймаут я проверил по логам в облачных часах. В основном, когда запрос отправляется лямбда-функции, регистрируется запрос на запуск. И я добавил регистраторы в конце выполнения, чтобы проверить, получен ли ответ или нет. И этот регистратор регистрируется в Cloud Watch. Но сразу после этого время запроса истекает. Установлен тайм-аут 15 сек. - person User-8017771; 08.01.2018
comment
Кажется странным случаем, лямбда не должна давать тайм-аут, если ответ отправлен - person dege; 08.01.2018
comment
Точно.. Я тоже так думал.. Но вы можете видеть, что это похожая проблема: stackoverflow.com/questions/40776264/, где также указан снимок - person User-8017771; 09.01.2018