Escrituras ridículamente lentas en Amazon DynamoDB (API de PHP)

Esta pregunta ya se ha publicado en los foros de AWS, pero aún no se ha respondido.https://forums.aws.amazon.com/thread.jspa?threadID=94589

Estoy tratando de realizar una carga inicial de una larga lista de elementos cortos (unos 120 millones de ellos), para recuperarlos luego por una clave única, y parece ser un caso perfecto para DynamoDb.

Sin embargo, mi velocidad de escritura actual es muy lenta (aproximadamente 8-9 segundos por cada 100 escrituras), lo que hace que la carga inicial sea casi imposible (llevaría unos 3 meses con el ritmo actual).

He leído los foros de AWS en busca de una respuesta y ya he intentado lo siguiente:

Cambié de llamadas sencillas de "put_item" a escrituras en lotes de 25 ítems (tamaño máximo de escritura por lotes recomendado), y cada uno de mis ítems es más pequeño que 1Kb (que también se recomienda). También es muy típico que 25 de mis artículos tengan menos de 1Kb, pero no está garantizado (y no debería importar de todos modos, ya que entiendo que solo el tamaño de un solo elemento es importante para DynamoDB).

Utilizo la región de la UE recientemente introducida (estoy en el Reino Unido) especificando su punto de entrada directamente llamando a set_region ('dynamodb.eu-west-1.amazonaws.com') ya que aparentemente no hay otra forma de hacerlo en PHP API. La consola de AWS muestra que la tabla en una región adecuada, por lo que funciona.

He deshabilitado SSL llamando a disable_ssl () (ganando 1 segundo por 100 registros).

Aún así, un conjunto de prueba de 100 elementos (4 llamadas de escritura por lotes para 25 elementos) nunca toma menos de 8 segundos para indexar. Cada solicitud de escritura por lotes tarda aproximadamente 2 segundos, por lo que no es como si la primera fuera instantánea y las solicitudes consiguientes fueran lentas.

Mi rendimiento aprovisionado de mesa es de 100 unidades de escritura y 100 unidades de lectura, lo que debería ser suficiente hasta ahora (se intentaron límites más altos por si acaso, sin efecto)

También sé que hay algunos gastos en la serialización de la solicitud, por lo que probablemente pueda usar la cola para "acumular" mis solicitudes, pero ¿eso realmente importa tanto para batch_writes? Y no creo que ese sea el problema porque incluso una sola solicitud lleva demasiado tiempo.

Descubrí que algunas personas modifican los encabezados de la cURL ("Esperar:" en particular) en la API para acelerar las solicitudes, pero no creo que sea una forma adecuada, y también la API se ha actualizado desde que se publicó ese consejo.

El servidor en el que se está ejecutando mi aplicación también está bien. He leído que a veces la carga de la CPU pasa por el techo, pero en mi caso todo está bien, es solo la solicitud de la red lo que lleva demasiado tiempo.

Estoy atascado ahora, ¿hay algo más que pueda intentar? No dude en solicitar más información si no he proporcionado lo suficiente.

Hay otros hilos recientes, aparentemente en el mismo problema,aquí (No hay respuesta hasta ahora).

Se supone que este servicio es ultra rápido, por lo que estoy realmente confundido por ese problema desde el principio.

Respuestas a la pregunta(3)

Su respuesta a la pregunta