6

毎分 S3 にアップロードする数千の小さなファイル (約 1 KB) があります。「HTTP リクエストを送信 - S3 の HTTP レスポンスを待機 - 次のリクエストを送信 - 次のレスポンスを待機 ...」というループですべてのファイルをアップロードすると、S3 とサーバーの間で 2 倍のレイテンシーを待たなければならないため、多くの時間がかかります。 . もちろん、私はすでに HTTP Keep-Alive ヘッダーを使用しています。

そのため、対応する (HTTP パイプライン) を待たずに複数の HTTP 要求を送信しようとします。バッチで 20 のリクエストを送信して、20 の応答を待ちます。以前の応答が途中であるときにまだ要求を送信できるため、これにより多くの時間を節約できると期待していました。

しかし、それは世界をより良くするものではありません。

約 200 ミリ秒で 20 個のリクエストを送信してから、応答を受信しようとします。このグラフのように、最初の応答を受け取った後、要求を送信するのと同じくらい速く応答を受け取ることができると思っていました。

実際には、最初の応答を受け取った後、応答ごとに約 300 ミリ秒待たなければなりません。1 つの要求を送信して 1 つの応答を受信することに比べれば、これほど優れたものはありません。

パイプライン技術の時間を短縮できないのはなぜですか? なぜ S3 はすべてのリクエストに多くの時間を費やすのですか? S3 は HTTP パイプラインをサポートしていますか?

ありがとう。

4

2 に答える 2

4

Amazon S3 は、各リクエストのレイテンシーの問題を回避するために並列化を採用しています。

S3 に対して何百もの同時リクエストを作成し、非常に短い時間で大量のファイルのバッチをアップロードできます。

于 2011-10-13T16:33:30.087 に答える
1

この Ubuntu バグ レポートによると、S3 の HTTP パイプライン実装は HTTP/1.1 仕様に違反しています。

于 2012-04-27T09:37:04.010 に答える