2011-10-13 14 views
6

Mam tysiące małych plików (około 1 KB), aby przesłać do S3 co minutę. Jeśli prześlę każdy plik w pętli "wyślij moje żądanie HTTP - poczekaj na odpowiedź HTTP S3 - wyślij następne żądanie - czekaj na następną odpowiedź ...", to kosztuje dużo czasu, ponieważ muszę czekać 2 razy opóźnienie między S3 i mój serwer. Oczywiście już korzystam z nagłówka HTTP Keep-Alive.Czy S3 obsługuje przesyłanie strumieniowe HTTP?

Próbuję wysyłać wiele żądań HTTP bez czekania na odpowiednie (potokowanie HTTP). Próbuję wysłać 20 żądań w grupie i czekać 20 odpowiedzi. Oczekiwalem, ze moze to zaoszczedzic duzo czasu, poniewaz nadal moge wyslac wezwanie po poprzedniej odpowiedzi po drodze.

Jednak nie czyni świata lepszym.

Wysyłam moje 20 wniosków w około 200ms, a następnie próbuję odebrać odpowiedź. Spodziewałem się, że mogę otrzymywać odpowiedź tak szybko, jak wysyłam żądania po otrzymaniu pierwszej odpowiedzi, na przykład this graph.

Fakty są takie, że po otrzymaniu pierwszej odpowiedzi muszę czekać około 300 ms na każdą odpowiedź. Nie ma lepszego porównania z wysłaniem jednego żądania i otrzymania jednej odpowiedzi.

Dlaczego nie mogę skrócić czasu na technikę pipelinowania? Dlaczego S3 kosztuje tak dużo czasu na każde żądanie? Czy S3 obsługuje przesyłanie strumieniowe HTTP?

Dzięki.

Odpowiedz

4

Równoległość sportowa Amazon S3 umożliwia obejście problemu z opóźnieniem dla każdego żądania.

Możesz wysyłać setki równoczesnych żądań do S3 i ładować duże partie plików w bardzo krótkim czasie.

Powiązane problemy