Amazon Simple Storage Service (Amazon S3) のワークロードが急増する (「リクエスト率およびリクエストパフォーマンスに関する留意事項」で説明されているリクエスト率を超える) と、ワークロードに応じて Amazon S3 のパフォーマンスがスケールされません。これに伴って、HTTP 500 や 503 エラーが発生する場合があります。Amazon S3 バケットのパフォーマンスを最適化して大量のリクエストに対応するには、どうすればよいですか?

重要: この情報が該当するのは、ワークロードが「リクエスト率およびリクエストパフォーマンスに関する留意事項」で説明されているリクエスト率を超えた場合に限ります。以下の解決方法は、より少ないワークロードでは不要です。

Amazon S3 では、各 AWS リージョンでオブジェクトキー名のインデックスを管理しています。オブジェクトキーは、インデックス内の複数のパーティションに UTF-8 バイナリ順で格納されます。キー名により、そのキーが格納されるパーティションが決まります。タイムスタンプやアルファベット順などの連続するプレフィックスを使用すると、Amazon S3 の特定のパーティションに大量のキーが集中し、そのパーティションの I/O 容量がひっ迫する場合があります。

ワークロードに複数のリクエストタイプが混在している場合、キー名のプレフィックスとしてハッシュ文字列を追加することで、ランダムなキー名にすることができます。ランダムなキー名にすると、I/O の負荷は複数のインデックスパーティションに分散されます。たとえば、キーとして割り当てる文字シーケンスの MD5 ハッシュを計算し、このハッシュの 3~4 文字をキー名のプレフィックスとして追加できます。次の例では、キー名にプレフィックスとして 4 文字の 16 進数ハッシュを追加しています。

exampleawsbucket/232a-2019-14-03-15-00-00/cust1234234/photo1.jpg
exampleawsbucket/7b54-2019-14-03-15-00-00/cust3857422/photo2.jpg
exampleawsbucket/921c-2019-14-03-15-00-00/cust1248473/photo2.jpg
exampleawsbucket/ba65-2019-14-03-15-00-00/cust8474937/photo2.jpg
exampleawsbucket/8761-2019-14-03-15-00-00/cust1248473/photo3.jpg
exampleawsbucket/2e4f-2019-14-03-15-00-01/cust1248473/photo4.jpg
exampleawsbucket/9810-2019-14-03-15-00-01/cust1248473/photo5.jpg
exampleawsbucket/7e34-2019-14-03-15-00-01/cust1248473/photo6.jpg
exampleawsbucket/c34a-2019-14-03-15-00-01/cust1248473/photo7.jpg
...

この 4 文字のハッシュプレフィックスがない場合、Amazon S3 はすべての負荷を 1 つか 2 つのインデックスパーティションに配布します。各オブジェクトの名前が exampleawsbucket/2019-14-03-15-00-0 で始まるため、すべてのオブジェクトは英数字順にインデックスに格納されるためです。4 文字のハッシュプレフィックスにより、負荷は複数のインデックスパーティションに分散されます。

ワークロードから送信されるリクエストの大部分が GET リクエストである場合も、キー名をランダムなものにすることができます。また、Amazon CloudFront を Amazon S3 と連携させて、低いレイテンシーと高いデータ転送速度でコンテンツをユーザーに配布することもできます。


このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください。

公開日: 2017 年 9 月 25 日

更新 : 2018 年 7 月 19 日