Skip to content

CloudFront による遅延の増加をトラブルシューティングして軽減する方法を教えてください。

所要時間2分
0

Amazon CloudFront からの応答で遅延が増加しています。原因を特定し、遅延を軽減したいです。

簡単な説明

CloudFront による遅延をトラブルシューティングするには、その遅延を引き起こしたイベントを特定します。次に、以下のトラブルシューティング手順に従って遅延を軽減してください。

解決策

遅延を引き起こしたイベントを特定する

次の手順を実行します。

  1. 次の curl コマンドを実行します。
    curl -w "DNS_resolution: %{time_namelookup}| TCP_negotiation_time: %{time_connect}| SSL_negotiation_time: %{time_appconnect}| TTFB: %{time_starttransfer}| Total time: %{time_total} \n" -o /dev/null -vsL https://www.example.com
    
    : example.com は、実際の CloudFront ドメイン名または代替ドメイン名 (CNAME) および、URL パスに置き換えてください。
  2. ウェブブラウザの開発者ツールで、ネットワークリクエストの各段階にかかる時間を確認します。たとえば、Mozilla Firefoxを使用している場合は、[Timings] タブを確認してください。詳細については、Firefox のウェブサイトで「Timings タブ」を参照してください。過去に遅延が発生していた場合は、CloudFront アクセスログ[time-taken] フィールドと [time-to-first-byte] フィールドを確認します。CloudFront アクセスログには、クライアントによる DNS ルックアッププロセスおよび、TCP ネゴシエーション、SSL/TLS ネゴシエーションにかかった時間は記録されません。

DNS 解決の遅延を軽減する

次の手順を実行します。

  • クライアント側で DNS の DNS キャッシュ時間を増やします。
  • ローカル DNS サーバーでキャッシュの有効期間 (TTL) を増やします。
  • DNS レジストラで DNS レコードの TTL を増やします。
  • インターネットサービスプロバイダーのリゾルバー DNS サーバーが原因で遅延が発生する場合は、パブリック DNS サーバーを使用してください。

TCP ネゴシエーション、SSL/TLS ネゴシエーション時の遅延を軽減する

次の手順を実行します。

  • ローカルネットワークの帯域幅とインターネットの帯域幅を確認します。
  • インターネットサーバープロバイダーまたはルーターにネットワーク障害が発生していないかを確認します。
  • インターネットサービスプロバイダーまたはネットワークルート経由での、ローカルネットワークのパフォーマンスを最適化します。
  • DNS リゾルバーにより、ウェブブラウザは最も近い、適切な POP ロケーションを見つけられることを確認してください。
  • HTTPS サイトのパフォーマンスを向上させるために、認証チェーンを短くしてください。
  • ファイアウォール、プロキシ、またはローカルルーターが遅延を引き起こす可能性があります。ネットワーク遅延を診断するには、次の MTR コマンドを実行します。
    mtr -rw example.com --no-dns
    

: example.com を実際のドメイン名に置き換えてください。

TTFB、TTL、RTT の遅延を軽減する

最初のバイトの所要時間 (TTFB)、合計所要時間 (TTL)、ラウンドトリップ時間 (RTT) の遅延を削減するには、次の手順を実行します。

CloudFront が「X-Cache: Hit from cloudfront」という応答値を返す場合

CloudFront は、リクエストの送信元が最も近いエッジロケーションである場合に「X-Cache:Hit from cloudfront」を返します。遅延を軽減するには、次の手順を実行してください。

CloudFront が「X-Cache: Miss from cloudfront」という応答値を返す場合

リクエストの送信先がオリジンである場合、CloudFront は「X-Cache:Miss from cloudfront」を返します。遅延を軽減するには、次の手順を実行してください。

  • CloudFront のエッジロケーションとオリジンロケーション間のラウンドトリップタイム (RTT) を短縮します。CloudFront のエッジロケーションからのリクエストを最も近いオリジンロケーションに送信すると、RTT は削減されます。ただし、リクエストがオリジンから地理的に離れたエッジロケーションから送信される場合は、TTFB が影響を受けます。RTTを最適化するには、ユーザーから地理的に近い複数の AWS リージョンにオリジンサーバーを複製してください。次に、発信元ドメイン名の DNS で設定を行い、遅延または位置情報に応じて、リクエストをオリジンサーバーにルーティングします。DNS プロバイダーに Amazon Route 53 を使用している場合は、「ルーティングポリシーを選択する」で詳細を確認してください。
  • CloudFront の自動圧縮を有効にしてファイルを圧縮し、ダウンロード時間を削減します。お使いのファイル形式が CloudFront 自動圧縮でサポートされていない場合は、そのファイルをオリジン内で事前に圧縮し、Content-Encoding ヘッダーを追加してください。
  • オリジン遅延のメトリクスを有効化すると、オリジンから CloudFront までの遅延を確認できます。注: 標準の CloudWatch 料金が適用されます。
  • CloudFront のオリジンシールドを有効にします。
  • Server-Timing ヘッダー機能を有効化し、応答ヘッダーポリシーを追加します。この機能は、CloudFront とオリジン間の遅延を引き起こすイベントを把握する参考となります。

関連情報

CloudFront からの応答が遅い場合に、遅延を減らす方法を教えてください

CloudFront ウェブ配信の遅延の問題を診断するために、AWS サポートに提供する必要がある情報を教えてください

AWS公式更新しました 1ヶ月前
コメントはありません

関連するコンテンツ