Amazon S3 へのダウンロードやアップロード時の速度が遅い、または一貫しない場合のトラブルシューティング方法を教えてください。

最終更新日: 2020 年 3 月 6 日

Amazon Simple Storage Service (Amazon S3) へのダウンロードやアップロード時に速度が遅い、または一貫しない場合のトラブルシューティング方法を教えてください。 Amazon S3 と特定のネットワークまたはマシンとの間でダウンロードやアップロードすると、リクエストのレイテンシーが高くなる可能性があります。レイテンシーが高い場合や、速度が一貫しない場合の診断方法を教えてください。

解決策

以下を確認して、Amazon S3 へのダウンロードやアップロード時の速度が遅い、または一貫しない原因を特定して軽減してください。

  • リクエストを行っているクライアントの場所
  • クライアントインターネットサービスプロバイダー (ISP)
  • クライアントネットワーク
  • クライアントリソース
  • Amazon S3 へのリクエスト率
  • ターンアラウンドタイムを決定するための Amazon S3 サーバーアクセスログ

リクエストを行っているクライアントの場所

できるだけ地理的にクライアントに近い Amazon S3 バケットを使用します。バケットはグローバルにアクセスできますが、特定の AWS リージョンに存在しています。リクエストとバケットの間の地理的距離は、レスポンスの受信にかかる時間に影響します。

クライアントと S3 バケット間の地理的距離の影響をテストできます。たとえば、バケットと同じ AWS リージョンで Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを起動してから、別のリージョンで別のインスタンスを起動できます。両方のインスタンスを使用して同じファイルのアップロードとダウンロードをテストし、2 つのリージョン間のスループットを比較します。

クライアントと S3 バケット間の距離を短縮するには、クライアントに近い別のリージョンのバケットにデータを転送することを検討してください。レプリケート元バケットのデータが新しいリージョンのレプリケート先バケットにレプリケートされるように、クロスリージョンレプリケーションを設定できます。他の選択肢として、S3 バケットの近くにクライアントを移行することを検討してください。

クライアントインターネットサービスプロバイダー (ISP)

ネットワークパスをテストすることで、パケット損失、ホップ数の増加、またはその他の ISP 関連の問題により、接続がインターネットを通過する際にどのような影響を受けるかを確認できます。

mtrtraceroute などのツールは、潜在的なパケット損失や、リモートホストに送信されるパケットのレイテンシーの手がかりを得るのに役立ちます。さらに、これらのツールは、レイテンシーを高くしているネットワークホップがあるかどうかを識別するのに役立ちます。

たとえば、次の Linux traceroute コマンドは TCP ポート 80 を使用して us-west-2 (オレゴン) リージョンのエンドポイントへの接続をテストします。

sudo traceroute -P TCP -p 80 s3.us-west-2.amazonaws.com

Windows オペレーティングシステムでは、tracert という同様のツールを使用できます。

注: 多くのネットワークデバイスは ICMP に応答しません。Amazon S3 へのリクエストに似たテストでは、バケットがあるリージョンのエンドポイントに対して TCP traceroute または mtr を必ず実行してください。

クライアントから Amazon S3 へのインターネットルートが最適でない場合は、Amazon CloudFront のエッジロケーションを活用する Amazon S3 Transfer Acceleration の使用を検討してください。Amazon S3 Transfer Acceleration 速度比較ツールで、Transfer Acceleration がユースケースのパフォーマンスを改善できるかどうかを確認できます。

注: Transfer Acceleration を有効にすると、追加のデータ転送料金が適用されることがあります。Amazon S3 料金表のデータ転送料金を必ず確認してください。

クライアントネットワーク

内部パケット検査、ウイルス対策スキャン、ネットワークアクセス管理をチェックして、クライアントネットワークが正常であることを確認します。さらに、クライアントまたはアプリケーションが DNS 解決とキャッシュをどのように処理するかを確認します。

Amazon S3 の分散性と可用性を活用するには、長期間DNS 解決をキャッシュしないようにしてください。

クライアントリソース

アプリケーションや、リクエストを行っているホストが送信したリクエストと受信したレスポンスの処理にレイテンシーが発生することがあります。ベストプラクティスとして、全体的にレイテンシーを発生させる可能性のあるホスト内にリソース競合 (CPU、メモリ、ネットワーク帯域幅など) がないことを確認します。

オペレーティングシステムに応じて、Resource Monitortop コマンドなどのツールを使用して、ほとんどのクライアントシステムでデータ転送中にリソースの使用状況を確認できます。

クライアントのストレージデバイスやシステムも、レイテンシーを発生させている可能性があります。クライアントのストレージデバイスへの読み取りまたは書き込み操作でレイテンシーが高くなると、Amazon S3 へのダウンロードまたはアップロードのパフォーマンスに影響を与える可能性があります。クライアント側からストレージデバイスの IOPS をトラブルシューティングする必要がありますが、Amazon S3 のパフォーマンスは、Amazon CloudWatch メトリクス FirstByteLatency を使用して分析できます。

注: Amazon S3 CloudWatch リクエストメトリクスは、カスタムメトリクスと同じ料金で請求されます。

FirstByteLatency は、Amazon S3 がクライアントからのリクエストを処理してから、クライアントへの応答の送信を開始するのにかかる時間を示します。CloudWatch メトリクスは、パフォーマンスのバケットレベルの観点を提供します。Amazon S3 サーバーのアクセスログを使用して、調査を絞り込むことができます。詳細については、セクション「ターンアラウンドタイムを決定するための Amazon S3 サーバーアクセスログ」を参照してください。

Amazon S3 へのリクエスト率

デフォルトでは、S3 バケットはプレフィックスごとに 1 秒あたり数千のリクエストをサポートできます。クライアントが Amazon S3 から HTTP 5xx エラーレスポンスを取得している場合、これはプレフィックスごとにサポートされているリクエスト率を超えていることを示している可能性があります。5xx エラーをトラブルシューティングするには、Amazon S3 から HTTP 5xx エラーをトラブルシューティングする方法を教えてくださいを参照してください。

ターンアラウンドタイムを決定するための Amazon S3 サーバーアクセスログ

Amazon S3 サーバーアクセスのログ記録を有効化して、ターンアラウンドタイムメトリクスを確認できます。ターンアラウンドタイムは、リクエストの最後のバイトを受信してからレスポンスの最初のバイトが送信されるまでの時間です。これは、Time To First Byte (TTFB) メトリクスです。ターンアラウンドタイムを使用して、Amazon S3 の観点からオペレーションにかかっている時間を判断できます。次に、全体的なダウンロードまたはアップロードの速度低下に寄与している可能性のある Amazon S3 以外のレイテンシーを評価できます。

レイテンシーが通常よりも高い場合は、リクエストの完了を待つのではなく、リクエストを再試行することをお勧めします。このガイダンスおよびその他のパフォーマンスに関する推奨事項の詳細については、Amazon S3 のパフォーマンスガイドラインを参照してください。


この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合