CloudFront からの遅い応答のレイテンシーを低減するにはどうすればよいですか?

所要時間1分
0

Amazon CloudFront からオブジェクトや画像をダウンロードすると、高いレイテンシーが発生します。「X-Cache:Miss from cloudfront」という応答を受け取るリクエストは、「X-Cache:Hit from cloudfront」という応答を受け取るリクエストよりもロードが遅くなります。なぜこのようなことが起こるのですか? どうすれば解決できますか?

解決方法

リクエストがオリジンに送信されると、CloudFront は「X-Cache:Miss from cloudfront」を返します。リクエストを最も近いエッジロケーションから処理すると、CloudFront は「X-Cache:hit from cloudfront」を返します。「Miss」リクエストは、オリジンに転送する追加ステップがあるため、ロードが遅くなる可能性があります。

リクエストをオリジンに転送することによるレイテンシーを避けるために、以下をチェックしてリクエストが CloudFront エッジロケーションから確実に処理されるようにしてください。

  • すべてのヘッダー、すべての cookie、またはすべてのクエリ文字列の転送は、キャッシュする代わりに、CloudFront にリクエストを渡すように命令することにため、転送しないでください。
  • ほとんど変更されない静的コンテンツ (CSS ファイルなど) と、頻繁に変更される動的コンテンツ (JavaScript ファイルなど) のキャッシュ動作を区別していることを確認します。静的コンテンツについては、オリジンがコンテンツを提供するのに必要ない cookie、クエリ文字列、またはヘッダーに基づくキャッシュを避けてください。
    注意: ウェブディストリビューションでは、CloudFront はデフォルトで、エッジロケーションにオブジェクトをキャッシュするときに Cookie を考慮しません。オリジンが 2 つのオブジェクトを返し、それらは Set-Cookie ヘッダーの値のみが異なる場合、CloudFront はオブジェクトの 1 つのバージョンのみをキャッシュします。
  • CloudFront がオリジンをクエリする前に、キャッシュ内でさらに時間が必要なパスパターンについて、最小 TTL、最大 TTL、またはデフォルト TTL を引き上げます。
  • オリジンが Cache-Control ヘッダーを使用している場合は、ディレクティブが配信に設定されている最小 TTL、最大 TTL、デフォルト TTL と一致していることを確認します。
  • オリジンが Expires ヘッダーを使用している場合、必要に応じて CloudFront がレスポンスをキャッシュすることをヘッダーが許可しているか確認します。
  • オリジンサーバーが Date および Last-Modified ヘッダーフィールドに有効で正確な値を設定していることを確認します。
  • オブジェクトの無効化の使用を制限します。必要な場合にのみ無効化を実行してください。
  • オブジェクトがリクエストされる頻度を確認します。オブジェクトが頻繁にリクエストされない場合、CloudFront はエッジロケーションからオブジェクトを削除することがあります。

動的コンテンツを提供していて、リクエストに対して「X-Cache:Miss from cloudfront」という応答を想定している場合は、キャッシュを使用せずにレイテンシーを低減するために、次を検討してください。

  • 地理的にリクエスタに近いオリジンサーバーをより多く設定します。次に、これらのサーバーに解決される単一のレイテンシーベースのルーティング DNS レコード (たとえば、origin-latencybased-dnsrecord.example.com) を設定します。CloudFront で、ディストリビューションのオリジンとして DNS 名 (たとえば、origin-latencybased-dnsrecord.example.com) を設定します。この設定により、CloudFront は、リクエストが到達するエッジロケーションに基づいて、最小のレイテンシーでオリジンサーバーからコンテンツを取得できます。Amazon Route 53 を DNS プロバイダーとして使用している場合は、Amazon Route 53 のレイテンシーベースルーティングに別のリージョンを追加するを参照してください。
  • CloudFront オリジンのキープアライブアイドルタイムアウトを増やします。この値は、接続を閉じる前までに CloudFront がオリジンサーバーとのアイドル接続を維持する時間を指定します。デフォルトのキープアライブアイドルタイムアウトは 5 秒ですが、オリジンサーバーがサポートしている場合は、最大 60 秒までの値を設定できます。ディストリビューションが動的コンテンツのリクエストをオリジンに転送する場合、タイムアウト値を引き上げることで、レイテンシーの低減に役立つ場合があります。これは、CloudFront がリクエストごとに新しい接続を作成する必要がないことによります。
    注: オリジンには、複数の IP アドレスを割り当てることができます。複数のオリジン IP アドレス間で永続的な接続を使用するために、CloudFront は高いリクエスト率と、より高いリクエスト頻度に依拠します。これは、リクエストがオリジン IP アドレス全体にラウンドロビンでルーティングされ、接続が IP アドレスごとに永続化されるためです。

関連情報

CloudFront Edge Cache から処理されるリクエストの割合を増やす (キャッシュヒット率)

CloudFront ウェブディストリビューションのレイテンシーの問題を診断するために AWS サポートに提供する必要がある情報は何ですか?

コンテンツがエッジキャッシュに保持される期間の管理 (有効期限)

Amazon S3 コンソールを使用してオブジェクトにヘッダーを追加する

AWS公式
AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ