Gravações ridiculamente lentas no Amazon DynamoDB (PHP API)

Esta questão já foi postada em fóruns da AWS, mas ainda permanece sem respostahttps://forums.aws.amazon.com/thread.jspa?threadID=94589

Estou tentando realizar um upload inicial de uma longa lista de itens curtos (cerca de 120 milhões deles), para recuperá-los mais tarde por chave única, e parece um caso perfeito para o DynamoDb.

No entanto, minha velocidade de gravação atual é muito lenta (cerca de 8-9 segundos por 100 gravações), o que torna o upload inicial quase impossível (levaria cerca de 3 meses com o ritmo atual).

Eu li fóruns da AWS procurando por uma resposta e já tentei as seguintes coisas:

Mudei de chamadas "put_item" únicas para gravações em lote de 25 itens (tamanho de gravação em lote máximo recomendado) e cada um dos meus itens é menor que 1Kb (o que também é recomendado). É muito comum até mesmo para 25 dos meus itens ter menos de 1Kb, mas isso não é garantido (e não importa, de qualquer maneira, como eu entendo, pois apenas o tamanho de um único item é importante para o DynamoDB).

Eu uso a recém-introduzida região da UE (eu estou no Reino Unido) especificando seu ponto de entrada diretamente chamando set_region ('dynamodb.eu-west-1.amazonaws.com'), como aparentemente não há outra maneira de fazer isso em PHP API. O console da AWS mostra que a tabela está em uma região adequada, o que funciona.

Desativei o SSL chamando disable_ssl () (ganhando 1 segundo por 100 registros).

Ainda assim, um conjunto de testes de 100 itens (4 chamadas de gravação em lote para 25 itens) nunca leva menos de 8 segundos para indexar. Cada solicitação de gravação em lote leva cerca de 2 segundos, portanto, não é como se a primeira fosse instantânea e as solicitações subsequentes fossem lentas.

Minha taxa de transferência provisionada pela tabela é de 100 unidades de gravação e 100 de leitura, o que deve ser suficiente até agora (tentei limites mais altos, bem como apenas no caso, nenhum efeito).

Eu também sei que há algumas despesas na serialização do pedido, então eu provavelmente posso usar a fila para "acumular" meus pedidos, mas isso realmente importa tanto para batch_writes? E não acho que esse seja o problema, porque mesmo um único pedido demora muito.

Descobri que algumas pessoas modificam os cabeçalhos cURL ("Expect:" em particular) na API para agilizar as solicitações, mas não acho que seja uma maneira apropriada, e também a API foi atualizada desde que esse aviso foi publicado.

O servidor em que meu aplicativo está sendo executado também é bom - eu li que às vezes a carga da CPU fica no topo, mas no meu caso está tudo bem, é apenas a solicitação de rede que demora muito.

Estou preso agora - há mais alguma coisa que eu possa tentar? Por favor, sinta-se livre para pedir mais informações, se eu não tiver fornecido o suficiente.

Existem outros tópicos recentes, aparentemente sobre o mesmo problema,Aqui (sem resposta até agora).

Este serviço deve ser ultra-rápido, então estou realmente intrigado com esse problema no começo.

questionAnswers(3)

yourAnswerToTheQuestion