Этот вопрос уже размещен на форумах AWS, но остается без ответа https://forums.aws.amazon.com/thread.jspa?threadID=94589
Я пытаюсь выполнить первоначальную загрузку длинного списка коротких элементов (около 120 миллионов из них), чтобы получить их позже по уникальному ключу, и это кажется идеальным для DynamoDb.
Однако моя текущая скорость записи очень медленная (примерно 8-9 секунд на 100 записей), что делает первоначальную загрузку практически невозможной (это займет около 3 месяцев с текущим темпом).
Я читал форумы AWS в поисках ответа и уже пробовал следующие вещи:
-
Я переключился с одиночных вызовов "put_item" на пакетные записи из 25 элементов (рекомендуемый максимальный размер записи партии), и каждый из моих элементов меньше 1 Кб (что также рекомендуется). Это очень типично даже для 25 моих предметов, которые также находятся под 1Kb, но это не гарантируется (и не имеет значения, так как я понимаю, поскольку для 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 ( "Ожидаем:" особенно ") в API для ускорения запросов, но я не думаю, что это правильный способ, а также API был обновлен после этого совета был опубликован.
Сервер, на котором работает мое приложение, тоже прекрасен - я читал, что иногда загрузка процессора проходит через крышу, но в моем случае все в порядке, это просто сетевой запрос, который занимает слишком много времени.
Я застрял сейчас - есть ли что-нибудь еще, что я могу попробовать? Пожалуйста, не стесняйтесь спрашивать дополнительную информацию, если я не предоставил достаточно.
Есть и другие недавние потоки, по-видимому, по той же самой проблеме, здесь (пока нет ответа).
Эта услуга должна быть ультра-быстрой, поэтому я действительно озадачен этой проблемой в самом начале.