Смешно медленная запись в Amazon DynamoDB (PHP API)

Этот вопрос уже размещен на форумах AWS, но остается без ответаhttps: //forums.aws.amazon.com/thread.jspa ThreadId = 94589

Я пытаюсь выполнить первоначальную загрузку длинного списка коротких элементов (около 120 миллионов из них), чтобы потом извлечь их по уникальному ключу, и это кажется идеальным случаем для DynamoDb.

Однако моя текущая скорость записи очень низкая (примерно 8-9 секунд на 100 записей), что делает первоначальную загрузку практически невозможной (при текущей скорости это займет около 3 месяцев).

Я прочитал форумы AWS в поисках ответа и уже попробовал следующее:

Я переключился с одиночных вызовов «put_item» на пакетную запись из 25 элементов (рекомендуемый максимальный размер пакетной записи), и каждый из моих элементов меньше 1 КБ (что также рекомендуется). Даже для 25 моих элементов очень характерно, что их размер не превышает 1 КБ, но это не гарантируется (и в любом случае это не имеет значения, поскольку я понимаю, что для DynamoDB важен только один размер элемента).

Я использую недавно введенный регион ЕС (я нахожусь в Великобритании), определяя его точку входа напрямую, вызывая set_region ('dynamodb.eu-west-1.amazonaws.com'), так как, очевидно, нет другого способа сделать это в PHP API. Консоль AWS показывает, что таблица в правильном регионе, так что работает.

Я отключил SSL, вызвав disable_ssl () (получая 1 секунду на 100 записей).

Тем не менее, тестовый набор из 100 элементов (4 вызова пакетной записи для 25 элементов) никогда не занимает менее 8 секунд для индексации. Каждый запрос на пакетную запись занимает около 2 секунд, поэтому первый запрос не является мгновенным, а последующие запросы - медленными.

Моя пропускная способность для таблицы равна 100 единицам записи и 100 единицам чтения, чего должно быть достаточно (пробовали и более высокие пределы на всякий случай, безрезультатно).

Я также знаю, что существуют некоторые расходы на сериализацию запросов, поэтому я, вероятно, могу использовать очередь для «накопления» своих запросов, но действительно ли это так важно для batch_writes? И я не думаю, что это проблема, потому что даже один запрос занимает слишком много времени.

Я обнаружил, что некоторые люди изменяют заголовки cURL (в частности, «Expect:») в API, чтобы ускорить запросы, но я не думаю, что это правильный путь, а также API был обновлен с момента публикации этого совета .

Сервер, на котором запущено мое приложение, тоже в порядке - я читал, что иногда загрузка процессора падает, но в моем случае все в порядке, просто сетевой запрос занимает слишком много времени.

Я застрял сейчас - что еще можно попробовать? Пожалуйста, не стесняйтесь спрашивать дополнительную информацию, если я не предоставил достаточно.

Есть и другие недавние темы, по-видимому, с той же проблемой,Во (пока ответа нет).

Предполагается, что этот сервис будет очень быстрым, поэтому я действительно озадачен этой проблемой в самом начале.

Ответы на вопрос(3)

Ваш ответ на вопрос