Звонки AWS SDK из Lambda занимают более 30 секунд - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть лямбда-функция NodeJs в AWS, которая должна читать некоторые данные. В качестве источника данных мы попробовали два варианта - S3 и DynamoDB. Обе они имеют одну и ту же проблему - когда мы проводим нагрузочное тестирование (10 запросов в секунду в течение 100 секунд), некоторые запросы к этим S3/DynamoDB не выполняются в течение 30 секунд, что является нашим временем ожидания Lambda. Сами запросы очень легкие - для S3 это файл размером 1 КБ, а для DynamoDB это таблица, содержащая только одну запись. В среднем эти запросы занимают менее 100 мс, но иногда мы получаем эти очень длинные пики, о которых я говорю.

Частота таких длинных запросов довольно мала - менее 1%, но для нас это по-прежнему неприемлемо. Более того, я не вижу причин, по которым у нас такие длинные ответы.

Еще одна вещь, которую мы заметили, это то, что эти 30 секунд + запросы обычно происходят после длительных периодов (4 часа или более), когда эти S3/DynamoDB ресурсы не вызываются.

Единственная причина, по которой я могу придумать, заключается в том, что после длительных периодов бездействия инфраструктура AWS не может достаточно быстро создать необходимое количество ENI. ENI необходимы, потому что S3 и DynamoDB вызываются через HTTP aws-sdk. Но это всего лишь предположение, которое я не знаю, как проверить.

В настоящее время я думаю о разогреве ENI, делая запросы к S3/DynamoDB, но я еще не пробовал.

Если у кого-то были подобные проблемы, я был бы признателен за любые предложения по устранению проблемы.

P.S. Увеличение лямбда-таймаута для нас не вариант. 30 секунд более чем достаточно, чтобы совершать такие простые звонки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...