Сканирование Dynamodb с AWS Lambda занимает намного больше времени, чем с локальной машины - PullRequest
0 голосов
/ 10 июля 2020

У меня относительно небольшая таблица DynamoDB (около 1000+ записей, может быть, несколько сотен байт каждая или меньше). Когда я использую boto3 для сканирования таблицы Dynamodb со своего компьютера, он мгновенно возвращает более 1000 записей. Однако, когда я выполняю ту же операцию в AWS Python Lambda, требуется более 15 секунд, чтобы вернуть тот же объем данных.

Я читал об ограничении в 1 МБ, а это не кажется, чтобы объяснить это, мы не возвращаем так много данных. Я попытался увеличить читаемость таблицы до 3 единиц. Но, похоже, это не повлияло на ситуацию.

Любая информация будет принята с благодарностью.

Я действительно пытался включить отладку Спасибо, хорошее предложение. На уровне журнала DEBUG есть

2020-07-10T14:52:18.302Z Calling dynamodb:scan with {'TableName': 'SIUser'}

2020-07-10 14:52:28,973 boto3.resources.action [DEBUG] Response: [entire response here]. 

, что наводит меня на мысль, что он извлек все данные за один раз. Большая часть времени - это 10 секунд, на которые эта часть ушла.

Спасибо.

1 Ответ

0 голосов
/ 10 июля 2020

Поскольку сканирование boto3 DynamoDB - это задача на основе сетевого ввода-вывода, важно иметь достаточно вычислительных ресурсов, если вы хотите завершить операцию своевременно.

Функция получает мощность процессора, пропорциональную распределению памяти. Попробуйте увеличить лимит памяти с шагом, скажем, 256 Мбайт, и посмотрите, поможет ли это.

...