2011-10-13 8 views
6

Tengo miles de archivos pequeños (aproximadamente 1 KB) para cargar a S3 cada minutos. Si cargo cada archivo en el ciclo "envíe mi solicitud HTTP - espere la respuesta HTTP de S3 - envíe la siguiente solicitud - espere la próxima respuesta ...", me costó mucho tiempo porque tengo que esperar 2 veces de latencia entre S3 y mi servidor Por supuesto, ya uso el encabezado HTTP Keep-Alive.¿Admite S3 la canalización de HTTP?

Por lo tanto, intento enviar varias solicitudes HTTP sin esperar el correspondiente (HTTP pipepelining). Intento enviar 20 solicitudes en un lote y esperar 20 respuestas. Esperé que esto pudiera ahorrar mucho tiempo porque todavía puedo enviar una solicitud cuando la respuesta anterior en el camino.

Sin embargo, no mejora el mundo.

Envío mis 20 solicitudes en aproximadamente 200ms, luego trato de recibir la respuesta. Esperaba poder recibir una respuesta tan pronto como envíe las solicitudes después de recibir la primera respuesta, como this graph.

La verdad es que después de recibir la primera respuesta, tengo que esperar unos 300ms por cada respuesta. No hay nada mejor en comparación con enviar una solicitud y recibir una respuesta.

¿Por qué no puedo acortar el tiempo de la técnica de pipelining? ¿Por qué S3 cuesta tanto tiempo para cada solicitud? ¿Soporta S3 la canalización de HTTP?

Gracias.

Respuesta

4

paralelización de Amazon S3 deportes para evitar el problema de latencia para cada solicitud.

Puede hacer cientos de solicitudes concurrentes a S3 y cargar grandes lotes de archivos en un período de tiempo muy corto.

Cuestiones relacionadas