問題の説明
Alibaba Cloud CDN アクセラレーションを有効にした後、ウェブサイトの読み込みが遅くなることがあります。アクセス遅延は多くの要因によって引き起こされる可能性があります。根本原因を分析し、ウェブサイトのパフォーマンスを最適化して問題を解決することが重要です。このトピックでは、これらのタスクを実行する方法について説明します。
ソリューション
Alibaba Cloud は以下の注意点を提供します。
インスタンスやデータの変更など、危険な操作を実行する場合は、ご利用のインスタンスに十分なディザスタリカバリおよびフォールトトレランス機能があることを確認し、データを保護してください。
ECS や RDS インスタンスなどのインスタンスの構成やデータを変更する場合は、事前にスナップショットを作成するか、RDS ログバックアップ機能を有効にしてください。
Alibaba Cloud プラットフォームでログイン認証情報などのセキュリティ情報を送信した場合は、直ちに認証情報を変更してください。
Alibaba Cloud CDN アクセラレーションを有効にした後にウェブサイトの読み込みが遅くなる場合は、このトピックの手順に従って問題を解決してください。
分析アプローチ
トラブルシューティングを開始する前に、CDN アクセラレーションの仕組みを理解する必要があります。詳細については、「Alibaba Cloud CDN とは」をご参照ください。これにより、問題の潜在的な原因を特定できます。要約すると、CDN は既存のネットワークにキャッシュノードのレイヤーを追加します。オリジンサーバーからのリソースを、ユーザーに最も近いノードに配信します。クライアントがリソースをリクエストすると、クライアントは最も近い CDN ノードにアクセスしてキャッシュデータを取得します。これにより、オリジンフェッチの数が減り、ウェブサイトの速度が向上します。アクセス遅延の考えられる原因は次のとおりです。
クライアントのローカルネットワークの問題 (ダウンストリーム帯域幅の不足や DNS 構成の誤りなど)。
クライアントと CDN ノード間のネットワーク品質が低く、レイテンシーが高くなる。
CDN ノードの動作が異常で、応答が遅くなる。
リソースサイズが大きく、ダウンロード時間が長くなる。
CDN オリジンフェッチ中のネットワーク品質が低い。
オリジンサーバーからの応答が遅い。
トラブルシューティングの範囲を絞り込むには、症状に関する情報を収集する必要があります。これは重要なステップです。
まず、アクセス遅延がすべてのユーザーに影響しているのか、特定のユーザーのみに影響しているのか、または特定のリージョンや特定の ISP のユーザーに影響しているのかを判断します。Alibaba Cloud は、Application Real-Time Monitoring Service (ARMS) や Cloud Monitor などのプロダクトを提供しています。これらのプロダクトを使用して、特定のリージョンや特定の ISP にプローブをデプロイし、より正確な診断結果を得ることができます。
少数のユーザーのみがアクセス遅延を経験している場合、問題はローカルネットワークが原因である可能性が高いです。
影響を受けるユーザーが特定のエリアにいるかどうかを確認します。たとえば、ある都市の多くの China Mobile ユーザーがアクセス遅延を報告しているが、同じ都市の China Unicom および China Telecom ユーザーは報告していない場合、問題はそのリージョンの ISP に関連している可能性があります。診断ツールを使用して、その場所からプローブを実行できます。
すべてのユーザーがアクセス遅延を経験している場合、問題はオリジンサーバーまたは構成が原因である可能性が高いです。すべての CDN ノードまたはネットワークが同時に障害を起こす可能性は非常に低いです。たとえば、加速リージョンが誤って構成されていないか、リクエストが動的コンテンツまたはキャッシュ不可能なコンテンツであるか、オリジンサーバーの応答が遅いかなどを確認できます。
遅いリクエストまたは異常なリクエストが CDN キャッシュから提供されているかどうかを判断します。
リクエストが CDN キャッシュにヒットした場合、オリジンフェッチは不要です。CDN ノードはキャッシュデータをクライアントに直接返します。この場合、オリジンサーバーは関与しません。
リクエストがキャッシュミスした場合、速度低下がクライアントと CDN ノード間、またはオリジンサーバーのどちらで発生しているかを確認する必要があります。
主要メトリック
標準の監視メトリックに加えて、CDN アクセラレーションにはシナリオ固有の指標が含まれます。これらのメトリックを追跡して、CDN パフォーマンスを評価し、ビジネス構成を最適化できます。詳細については、「CDN の主要メトリック」をご参照ください。
情報収集
完全な HTTP リクエストは、DNS 解決 > TCP 接続 > SSL ハンドシェイク (HTTPS の場合) > クライアントリクエスト > サーバー応答 のシーケンスに従います。このプロセスを深く理解することで、問題を分析するのに役立ちます。クライアントから以下の情報を収集する必要があります。
クライアントネットワークの状態と CDN ノードの IP アドレスの取得
ping コマンドを実行して高速化ドメイン名をテストできます。これにより、ドメイン名が CDN ノードに正しく解決されていることを確認し、クライアントと CDN ノード間のネットワーク接続とレイテンシーをチェックできます。ping コマンドが失敗した場合は、リンク診断を実行できます。詳細については、「リンク診断方法」をご参照ください。
クライアント IP アドレスと LocalDNS の取得
CDN ノードのスケジューリングは、クライアントの LocalDNS に依存します。クライアントがそのリージョンと ISP に一致する正しい LocalDNS を使用していることを確認してください。Ali Kunlun User Diagnostic Tool にアクセスして、クライアントの IP アドレスと DNS 設定を取得できます。
読み込みの遅いリソースの URL の特定
ブラウザの開発者ツールを開き、[Network] タブに移動して URL を入力し、すべての HTTP リクエストを確認できます。[Time] 列をクリックしてリクエストを期間でソートし、読み込みの遅いリソースを特定します。[Domain] 列で、CDN 加速ドメイン配下の読み込みの遅いリソースの URL を見つけることができます。

通常、ウェブサイトは多くのリソースを読み込みます。一部の URL は CDN によって高速化されない場合があります。CDN によって高速化されないリソースの読み込みが遅い場合、CDN アクセラレーションされたリソースが迅速に読み込まれても、ページ全体が遅く読み込まれるように見えます。リクエストを時間でソートすることで、読み込みの遅いリソースの正確な URL を特定できます。
HTTP リクエストおよびレスポンスヘッダーの取得
[Network] タブで、遅いリクエストの [Name] をクリックします。[Headers] セクションで、[General]、[Response Headers]、および [Request Headers] セクションを表示できます。これらのヘッダーは、リクエストが静的リソースであるかどうか、およびリクエストがキャッシュにヒットしたかどうかを示します。

モバイル 4G 接続で問題が発生した場合、携帯電話でのパケットキャプチャは難しい場合があります。この場合、モバイルホットスポットを有効にし、PC をホットスポットに接続できます。その後、PC から診断情報を取得できます。
HTTP リクエストのタイミングデータの取得
[Timing] タブには、リクエストライフサイクルの各フェーズで費やされた時間が表示されます。

一般的なケース
CDN アクセラレーションの原則と HTTP リクエストプロセスを理解した後、観測された症状とクライアント側のデータを組み合わせて問題を特定または特定できます。以下のセクションでは、一般的なシナリオについて説明します。
ケース 1: クライアントと CDN ノード間のネットワーク品質が低い
クライアントが ping コマンドを実行して高速化ドメイン名をテストすると、クライアントは高いレイテンシーまたはパケット損失を観測する可能性があります。クライアントの IP アドレス、DNS 設定、ping 結果、および MTR スクリーンショットを取得する必要があります。CDN スケジューリングはクライアントの DNS を使用するため、このデータはスケジューリングが正しいかどうかを確認するのに役立ちます。ping および MTR の結果は、ネットワークパスのどこでレイテンシーが発生しているかを示します。以下のセクションでは、2 つの例を示します。
加速リージョン構成の誤り
中国本土のユーザーが中国本土以外のノードにルーティングされるか、中国本土以外のユーザーが中国本土のノードにルーティングされます。例を以下に示します。
この場合、加速リージョンを [Global] に設定する必要があります。
加速リージョンが [Mainland China Only] に設定されている場合、中国本土以外のユーザーは中国本土の CDN ノードにルーティングされます。
加速リージョンが [Global (Excluding Mainland China)] に設定されている場合、中国本土のユーザーは中国本土以外の CDN ノードにルーティングされます。
クライアントの DNS 構成の誤り
クライアントは、そのリージョンと ISP に一致する DNS サーバーを使用する必要があります。
China Mobile の広東省のユーザーが China Unicom の DNS サーバーを使用している場合、China Unicom の CDN ノードにルーティングされます。これにより、ネットワーク距離が増加します。
China Mobile の広東省のユーザーがハルビンモバイルの DNS サーバーを使用している場合、ハルビンモバイルの CDN ノードにルーティングされます。これにより、ネットワーク距離が増加します。
加速リージョンと DNS 設定の両方が正しいにもかかわらず、ネットワーク品質が依然として低い場合は、さらなる診断のために traceroute および MTR データを取得できます。
ケース 2: キャッシュヒット率が低い、またはオリジンフェッチが頻繁に発生する
静的リソースアクセラレーションシナリオでは、CDN は静的コンテンツをクライアントに最も近いノードにキャッシュします。ユーザーはキャッシュから直接リソースを取得できます。これにより、長距離のオリジンフェッチパスが回避されます。低いキャッシュヒット率は、オリジンサーバーへの負荷を増加させ、静的リソースのアクセラレーション効率を低下させます。キャッシュヒット率はユーザーエクスペリエンスに直接影響します。したがって、高いキャッシュヒット率を達成することは CDN のコア目標です。低いキャッシュヒット率の特定の原因に基づいて構成を最適化する必要があります。詳細については、「Alibaba Cloud CDN のキャッシュヒット率の向上」をご参照ください。CDN レスポンスヘッダーの X-Cache フィールドをチェックして、リクエストがキャッシュにヒットしたかどうかを確認できます。

X-Cache: MISS は、リクエストがキャッシュミスし、オリジンフェッチが必要であったことを示します。HIT は、リクエストが CDN キャッシュにヒットし、キャッシュデータが返されたことを示します。
X-Swift-CacheTime: このフィールドは、ファイルが CDN ノードにキャッシュできる期間を示します。値が 0 の場合、リクエストされたコンテンツはキャッシュできません。
以下のセクションでは、低いキャッシュヒット率または頻繁なオリジンフェッチの症状と最適化戦略について説明します。
リソースへの初回アクセスは、オリジンサーバーへの直接アクセスよりも遅くなります。これは、CDN ノードにリソースがなく、最初にオリジンサーバーから取得する必要があるためです。URL プリフェッチ機能を使用して、コンテンツを CDN ノードにプリロードできます。詳細については、「リソースのパージとプリフェッチ」をご参照ください。これにより、初回ユーザーがキャッシュにヒットできるようになり、読み込み速度が向上します。
トラフィックの少ないリソースは人気度が低いです。CDN ノードはすべてのユーザー間で共有されます。キャッシュルールは最大キャッシュ期間を定義します。高速化ドメイン名へのトラフィックが少ない場合、ファイルは人気度に基づいて早期に削除される可能性があります。人気度はアクセス頻度によって定義されます。人気度の低いファイルは、より早くキャッシュから削除されます。
キャッシュ期間が短い不適切なキャッシュ構成は、頻繁なオリジンフェッチにつながります。
カスタムキャッシュルールを構成しない場合、ETag または Last-Modified レスポンスヘッダーを持たない静的ファイルはキャッシュできません。この問題を解決するには、オリジンサーバーでこれらのヘッダーを追加するか、CDN キャッシュルールを構成します。詳細については、「キャッシュルールの構成」をご参照ください。
カスタムキャッシュルールを構成しない場合、CDN はデフォルトポリシーを使用します。詳細については、「Alibaba Cloud CDN のデフォルトキャッシュルールとその優先順位」をご参照ください。デフォルトのキャッシュ期間は短く、たとえば 3,600 秒以下です。これにより、頻繁な有効期限切れとオリジンフェッチが発生します。ビジネスニーズに基づいて適切なキャッシュ期間を設定する必要があります。
オリジンサーバーが s-maxage=0、max-age=0、no-cache、no-store、または private などのキャッシュを無効にする Cache-Control ヘッダー、または Pragma: no-cache ヘッダーを送信する場合、これらのヘッダーはより高い優先度を持つため、CDN はキャッシュルールを無視します。これらのヘッダーをオリジンサーバーで Public などのキャッシュ可能な値に変更する必要があります。詳細については、「NGINX HTTP キャッシュポリシーの構成」および「Apache キャッシュポリシーの構成」をご参照ください。
変数パラメーターを含む URL: リソース URL に変更されるパラメーターが含まれている場合、CDN は各一意の URL を新しいリクエストとして扱います。たとえ URL が同じファイルを指していてもです。これにより、不要なオリジンフェッチがトリガーされます。パラメータフィルタリングを有効にできます。詳細については、「パラメーターの無視」をご参照ください。
大容量ファイルのレンジオリジンフェッチ: 大容量ファイルの場合、レンジオリジンフェッチを有効にしてオリジン取得を最適化できます。詳細については、「レンジオリジンフェッチの構成」をご参照ください。
ケース 3: 動的リクエストの遅延
遅いリクエストが動的コンテンツの場合、各クライアントリクエストはリアルタイムデータを生成するためにオリジンサーバーに送信される必要があります。CDN は動的コンテンツをキャッシュできません。したがって、CDN はアクセラレーションのメリットを提供せず、リクエストをオリジンサーバーに転送するだけです。ウェブサイトまたはアプリケーションに API オペレーションなどの動的要素が多い場合、以下のソリューションを検討できます。
静的コンテンツと動的コンテンツを分離します。静的リソースには CDN 加速ドメインを使用し、動的リクエストにはオリジンサーバーに直接ポイントする別個のドメイン名を使用できます。
Dynamic Route for CDN (DCDN) を使用して、動的リクエストを高速化します。詳細については、「DCDN とは」をご参照ください。注: DCDN は、レイヤー 4 ルーティングと転送の最適化を使用して動的リクエストを高速化し、オリジンサーバーに迅速に到達させます。ただし、オリジンサーバーの応答が遅い場合は、オリジンサーバーを最適化する必要があります。
ケース 4: クロスボーダーオリジンフェッチの遅延
オリジンサーバーと主要ユーザーが異なる国にある場合、CDN オリジンフェッチは海底ケーブル容量の制限や公衆ネットワークの輻輳の影響を受ける可能性があります。これにより、不安定なオリジンフェッチ品質、コンテンツ取得の遅延、高い失敗率が発生し、CDN キャッシュと配信に影響を与える可能性があります。この問題を解決するには、Global Accelerator (GA) を統合することで、特定の国向けにオリジンサーバーを高速化し、その後、リージョン固有の CDN back-to-origin ポリシーを構成できます。
オリジンサーバーのタイプに応じて、GA アクセラレーションを構成するには、以下のトピックをご参照ください。
ECS オリジンサーバーの高速化。詳細については、「GA と CDN を使用したオリジンフェッチの高速化」をご参照ください。
ALB オリジンサーバーの高速化。詳細については、「GA を使用した ALB バックエンドアプリケーションの高速化」をご参照ください。
OSS オリジンサーバーの高速化。詳細については、「転送アクセラレーションを使用した OSS へのアクセス」をご参照ください。
ケース 5: ホームページの読み込み遅延
クライアントが http://www.example.com/ にアクセスすると、ブラウザはホームページをリクエストします。リクエストが成功すると、サーバーは HTML コードを返します。その後、ブラウザは HTML コードで参照されている画像、JS ファイル、CSS ファイルなどの追加リソースをリクエストします。ホームページが動的またはキャッシュ不可能な場合、すべてのリクエストがオリジンフェッチをトリガーします。遅いオリジンサーバーはホームページの読み込み遅延を引き起こし、[Network] タブで長い [Pending] 状態として表示されます。リクエストがキャッシュにヒットしたかどうかを確認するには、「ケース 2: キャッシュヒット率が低い、またはオリジンフェッチが頻繁に発生する」をご参照ください。
このシナリオでは、ホームページのリクエストはデータが返されるまで [Pending] 状態のままです。ホームページが読み込まれた後、静的リソースは迅速に読み込まれます。
ケース 6: 大容量のウェブサイトリソース
ウェブサイトが大容量リソースを読み込む場合、高速化ドメイン名に対してパフォーマンス最適化を有効にできます。詳細については、「パフォーマンス最適化」をご参照ください。この機能は、ファイルサイズを削減し、アクセラレーション効率とページの可読性を向上させることができます。以下のファイル形式がインテリジェント圧縮でサポートされています: text/html、text/xml、text/plain、text/css、application/javascript、application/x-javascript、application/rss+xml、text/javascript、image/tiff、image/svg+xml、application/json、および application/xmltext。
ケース 7: 特定のリージョンの特定の ISP ユーザーに対するアクセス遅延
影響を受けるクライアントには共通の特性がある場合があります。たとえば、ある都市の多くの China Mobile ユーザーが特定の期間にアクセス遅延を報告しているが、China Unicom および China Telecom ユーザーは報告していない場合などです。この問題は、ローカル ISP ネットワークまたはそのリージョンにサービスを提供する CDN ノードに関連している可能性が高いです。影響を受けるユーザーから ping データを取得して、クライアントと CDN ノード間のレイテンシーをチェックすることで、トラブルシューティングを開始できます。
さらに、テストマシンをユーザーから報告された CDN ノードの IP アドレスにバインドしてテストを実行できます。これは、テストマシンをオリジンサーバーに直接バインドするのと似ていますが、代わりに CDN ノードの IP アドレスを使用します。テストを実行する前に、ノード自体の応答が遅いかどうかを確認してください。ノードの応答が遅い場合は、リクエストがキャッシュにヒットしたかどうか、およびリソースサイズを確認してください。その後、前述のケースに基づいて問題を分析します。問題を特定できない場合は、Alibaba Cloud にチケットを送信してください。
適用範囲
CDN
DCDN