2011-10-13 111 views
6

我有數千個小文件(大約1 KB)每分鐘上傳到S3。 如果我上傳循環中的每個文件 「發送我的HTTP請求 - 等待S3的HTTP響應 - 發送下一個請求 - 等待下一個響應...」, 它花費很多時間,因爲我必須等待S3之間的等待時間2倍和我的服務器。 當然,我已經使用HTTP Keep-Alive頭。S3是否支持HTTP流水線?

所以我嘗試發送多個HTTP請求而不等待相應的(HTTP流水線)。我嘗試批量發送20個請求並等待20個響應。我預計這可能會節省很多時間,因爲我仍然可以在前一個響應的時候發送請求。

但是,它並沒有讓世界變得更好。

我在200ms左右發送了20個請求,然後我嘗試收到回覆。 我希望在收到第一個響應之後,我可以收到與發送請求一樣快的響應,例如this graph

事實是,在我收到第一個響應之後,我必須等待大約300ms的每個響應。與發送一個請求和收到一個響應相比,它沒有任何好處。

爲什麼我不能縮短流水線技術的時間?爲什麼S3爲每個請求花費了這麼多時間? S3是否支持HTTP流水線?

謝謝。

回答

4

Amazon S3運動並行化來解決每個請求的延遲問題。

您可以向S3發出數百個併發請求,並在很短的時間內上傳大批量的文件。