Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
オンプレミスクライアントから Amazon S3 にデータをダウンロードまたはアップロードする際に、速度が遅くなったり不安定になったりする場合のトラブルシューティング方法を教えてください。
Amazon Simple Storage Service (Amazon S3) と、特定のネットワークまたはオンプレミスクライアントとの間でデータをダウンロードまたはアップロードすると、遅延が発生します。
解決策
Amazon S3 でのダウンロードまたはアップロード時の遅延を特定して解決するには、次の設定を確認します。
リクエスト元のクライアントの場所
可能な限り、ローカルクライアントに地理的に近い Amazon S3 バケットを使用することをおすすめします。バケットがリクエスト元から地理的に離れていると、応答時間が長くなります。
クライアントと S3 バケット間の地理的距離による影響をテストするには、次の手順を実行します。
- バケットと同じ AWS リージョンで Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを起動します。
- 他のリージョンで別のインスタンスを起動します。
- 両方のインスタンスを使用して同じファイルをアップロード、ダウンロードします。
- 2 リージョンでのスループットを比較します。
ローカルクライアントと S3 バケットの距離を近くするには、データをクライアントに近い別のリージョンのバケットに移動します。クロスリージョンレプリケーション (CRR) を設定すると、ソースバケットのデータを新しいリージョンの複製先バケットに複製できます。または、クライアントを S3 バケットの近くに移行します。
ローカルクライアントの ISP
ネットワークパスをレビューし、パケットロス、大量のホップ、その他のインターネットサービスプロバイダー (ISP) 関連の問題、TCP の再送信、SSL ハンドシェイクの失敗、DNS 解決の遅延、ネットワークプロキシなどの有無を確認します。
リモートホストに送信するパケットにおける、潜在的なパケットロスやパケット遅延を判断するには、mtr や traceroute などのツールを使用します。このツールは、ネットワークホップが原因で遅延が増加しているかどうかも判断できます。たとえば、次の Linux コマンド traceroute では、us-west-2 (オレゴン) リージョンのエンドポイントへの TCP ポート 80 経由での接続をテストします。
sudo traceroute -P TCP -p 80 s3.us-west-2.amazonaws.com
Windows オペレーティングシステム (OS) では、次の tracert コマンドを実行します。
$ tracert -d -4 s3.amazonaws.com
注: 多くのネットワークデバイスは、インターネット制御メッセージプロトコル (ICMP) に応答しません。擬似的な Amazon S3 リクエストのテストを行うには、バケットのリージョナルエンドポイントに TCP traceroute または mtr を実行します。
クライアントから Amazon S3 へのインターネットルートが最適でない場合は、Amazon CloudFront のエッジロケーションで Amazon S3 Transfer Acceleration を使用します。Amazon S3 Transfer Acceleration Speed Comparison ツールを使用すると、Transfer Acceleration で転送速度を向上できるかどうかを判断できます。
注: Transfer Acceleration を有効にすると、追加のデータ転送料金が適用されます。Amazon S3 の料金を確認してください。
ローカルクライアントのネットワーク
クライアントのネットワークが正常であることを確認するには、内部パケット検査、ウイルス対策スキャン、ネットワークアクセス管理を確認します。さらに、クライアントまたはアプリケーションが DNS の解決とキャッシングをどのように処理しているかを確認します。DNS 解決のキャッシュは、長期間保持しないことをおすすめします。
Amazon S3 同期転送が遅いオンプレミスクライアントでの遅延とパフォーマンスに関する問題を特定するには、ネットワーク診断テストを使用します。パフォーマンスを定期的に分析し、転送速度に影響が出る前に潜在的な問題を検出することをおすすめします。
注: AWS PrivateLink for Amazon S3 を使用してセキュリティとデータ転送の信頼性を向上させることをおすすめします。
クライアントのリソース
リクエストを行うホストによるリクエストと応答の処理方法が、アプリケーションでの遅延を引き起こす可能性があります。ホスト内でのリソースの競合を防ぐことをおすすめします。たとえば、CPU、メモリ、またはネットワーク帯域幅においてリソースの競合が発生することがあります。
データ転送中のリソース使用状況を確認するには、Resource Monitor などのツールまたは top コマンドを使用します。詳細については、Microsoft Learn のウェブサイトで「Resource Monitor」を参照してください。
注: 使用できるツールは OS によって異なります。
クライアントのストレージデバイスに対する読み取りまたは書き込み操作で遅延が発生すると、Amazon S3 でのダウンロードまたはアップロードのパフォーマンスが影響を受ける可能性があります。クライアント側からストレージデバイスの IOPS をトラブルシューティングするには、Amazon CloudWatch メトリクス FirstByteLatency を参照し、Amazon S3 のパフォーマンスを分析します。
注: AWS では、Amazon S3 リクエストメトリクスにはカスタム CloudWatch メトリクスと同じレートで料金が発生します。CloudWatch の料金に関する詳細については、「Amazon CloudWatch の料金」を参照してください。
Amazon S3 へのリクエストレート
デフォルトでは、S3 バケットは、パーティション化したプレフィックスごとに 1 秒あたり数千のリクエストをサポートできます。Amazon S3 がクライアントに HTTP 5xx エラー応答を返した場合、プレフィックスあたりのサポートされるリクエストレートを超えています。5xx エラーのトラブルシューティング方法については、「Amazon S3 で発生する HTTP 500 または 503 エラーのトラブルシューティング方法を教えてください」を参照してください。
AWS のグローバルに分散された CloudFront エッジロケーションでの転送時間を短縮するには、Amazon S3 Transfer Acceleration を使用します。
ネットワーク設定を改善し、転送パフォーマンスを向上させるには、AWS Direct Connect を使用します。詳細については、「AWS とハイブリッドネットワークのパフォーマンスを向上させる」を参照してください。
パフォーマンスを向上させる設計パターンについては、「Amazon S3 のパフォーマンス設計パターン」を参照してください。AWS DataSync、AWS Snowball、AWS Snowcone、AWS Transfer Family を使用すると、大規模なデータセットを Amazon S3 に移行できます。AWS SDK と AWS コマンドラインインターフェイス (AWS CLI) を使用しても、効率的な並列転送プロセスとバッチ転送プロセスを作成できます。大容量ファイルにマルチパートアップロードを使用する方法については、「AWS CLI を使用して大容量ファイルを Amazon S3 にアップロードする際のパフォーマンスを最適化する方法を教えてください」を参照してください。
Amazon S3 サーバーアクセスログで所要時間 (Turn-Around Time) を判定する
Turn-Around Time メトリクスを確認するには、Amazon S3 サーバーアクセスログを有効にします。Turn-Around Time メトリクスの詳細については、「Amazon S3 サーバーアクセスログの形式」の「Turn-Around Time」を参照してください。Turn-Around Time メトリクスを参照し、操作の所要時間を判定します。その後、ダウンロードまたはアップロードが遅くなる原因となる可能性のある Amazon S3 以外の他の遅延を評価します。
遅延が想定よりも大きい場合は、リクエストの完了を待つのではなく、リクエストを再試行することをおすすめします。詳細については、「Amazon S3 のパフォーマンスに関するガイドライン」を参照してください。
ファイル転送アクティビティ
TotalRequestLatency メトリクスを参照し、S3 バケットが受信した最初のバイトから、ローカルクライアントがバケットに送信する最後のバイトまでのリクエストごとの経過時間を追跡します。潜在的なパフォーマンス上の問題を特定するには、メトリクス GetRequests と PutRequests および、ステータスコード 4xx と 5xx を確認します。
注: AWS では、GetRequests メトリクスと PutRequests メトリクスには Amazon CloudWatch カスタムメトリクスと同じレートで料金が発生します。
関連情報
CloudWatch での Amazon S3 リクエストメトリクス
Amazon S3 で AWS CLI の sync コマンドを使用する際の、データ転送のパフォーマンスを向上させる方法を教えてください

