Fastlyのトラブルシューティング
以下の情報を使用して、Adobe Commerce on cloud インフラストラクチャプロジェクト環境のMagento 2用Fastly CDN モジュールのトラブルシューティングと管理を行います。 例えば、応答ヘッダーの値とキャッシュ動作を調査して、Fastlyのサービスとパフォーマンスの問題を解決できます。
Pro実稼動環境およびステージング環境では、New Relic ログ を使用して、Fastly CDNおよびWAF ログデータを表示および分析し、エラーとパフォーマンスの問題をトラブルシューティングできます。
Fastly サービス IDを探す
管理者からFastlyを設定するか、高度なFastly設定とトラブルシューティングのためにFastly API リクエストを送信するには、Fastly サービス IDが必要です。
プロジェクト環境でFastlyが有効になっている場合は、管理者からサービス IDを取得できます。 Fastly資格情報の取得を参照してください。
開発者と高度なVCL ユーザーは、カスタム VCLを使用して、Fastly変数req.service_idを使用してサービス IDを取得できます。 例えば、VCLのカスタムロギングディレクティブにreq.service_idを追加して、サービス IDの値を取得できます。
log {"syslog"} req.service_id {" my_logging_endpoint_name :: "}
実稼動環境とステージング環境では、同じVCLを使用できます。 Fastly ドキュメントのvcl_logを参照してください。
サイトのパフォーマンス、パージ、キャッシュの問題
次のリストを使用して、Adobe Commerce on cloud infrastructure環境のFastly サービス設定に関連する問題を特定し、トラブルシューティングします。
-
ストアメニューが表示されないか、動作しません – ライブサイト URLを使用する代わりに、オリジンサーバーへのリンクまたは一時リンクを直接使用しているか、cURL コマンド で
-H "host:URL"を使用している可能性があります。 Fastlyをオリジンサーバーにバイパスすると、メインメニューが機能せず、ブラウザー側でキャッシュできる誤ったヘッダーが表示されます。 -
上部ナビゲーションが機能しない – 上部ナビゲーションは、デフォルトのEdge Fastly VCL スニペットをアップロードするときに有効になるMagento Side Includes (ESI)処理に依存しています。 ナビゲーションが機能しない場合は、Fastly VCLをアップロードし、サイトを再確認します。
-
Geo-location/GeoIPが機能しません— デフォルトのMagento Fastly VCL スニペットは、国コードをURLに追加します。 国コードが機能しない場合は、Fastly VCLをアップロードし、サイトを再確認します。
-
ページがキャッシュされていません – デフォルトでは、Fastlyは
Set-Cookiesヘッダーを持つページをキャッシュしません。 Adobe Commerceは、キャッシュ可能なページでもCookieを設定します(TTL > 0)。 デフォルトのMagento Fastly VCLは、キャッシュ可能なページでこれらのCookieを削除します。 ページがキャッシュされていない場合は、Fastly VCLをアップロードし、サイトを再確認します。この問題は、テンプレート内のページブロックがキャッシュ不可とマークされている場合にも発生する可能性があります。 この場合、問題はサードパーティ製のモジュールまたは拡張機能がAdobe Commerce ヘッダーをブロックまたは削除したことが原因である可能性が高くなります。 この問題を解決するには、「X-Cache contains only MISS, no HIT」を参照してください。
-
パージ要求が失敗しています – パージ要求を送信すると、Fastlyは次のエラーを返します。
code language-text The purge request was not processed successfully.この問題は、次のいずれかの問題が原因で発生する可能性があります。
- Adobe Commerce on cloud infrastructure プロジェクト環境のFastly サービス設定のFastly資格情報が無効です
- カスタム VCL スニペットの無効なコード
この問題を解決するには、Adobe Commerce ヘルプセンターの「 クラウド上のFastly キャッシュのパージ中にエラーが発生しました」を参照してください。
Fastlyの503 エラー
Fastlyが503個のタイムアウトエラーを返す場合は、エラーログと503個のエラーページを確認して、根本原因を特定します。
503 エラーが発生した場合は、実稼動環境またはステージング環境のエラーログとphp アクセスログを確認して、問題のトラブルシューティングを行います。
エラーログを確認するには:
-
code language-text /var/log/platform/<project-ID>/error.logこのログには、アプリケーションまたはPHP エンジンからのエラー(例:
memory_limitまたはmax_execution_time exceededエラー)が含まれます。 Fastlyに関連するエラーが見つからない場合は、PHP アクセスログを確認してください。 -
PHP アクセスログ
code language-text /var/log/platform/<project-ID>/php.access.log503 エラーを返したURLのHTTP 200応答のログを検索します。 200件の回答が見つかった場合は、Adobe Commerceがエラーなくページを返したことを意味します。 これは、Fastly サービス設定で設定された
first_byte_timeout値を超える間隔の後に問題が発生した可能性があることを示しています。
503 エラーが発生すると、Fastlyはエラーとメンテナンスページで理由を返します。 カスタム応答ページ のコードを追加すると、理由が表示されない場合があります。 デフォルトのエラーページで理由コードを表示するには、カスタムエラーページのHTML コードを削除します。
Fastly 503 エラーページを確認するには:
-
管理者に ログインします。
-
Stores > Settings > Configuration > Advanced > Systemをクリックします。
-
右側のペインで、フルページキャッシュを展開します。
-
Fastly Configuration セクションで、カスタム合成ページを展開します。次の図を参照してください。
-
「HTMLを設定」をクリックします。
-
カスタムコードを削除します。 後で追加できるように、テキストプログラムに保存することができます。
-
「アップロード」をクリックして、更新をFastlyに送信します。
-
ページの上部にある「設定を保存」をクリックします。
-
503 エラーの原因となったURLを再度開きます。 次の例に示すように、Fastlyは理由を含むエラーページを返します。
Fastly アカウントに既に関連付けられているApexとサブドメイン
Adobe Commerce on cloud infrastructure プロジェクトのapex ドメインとサブドメインが、割り当てられたサービス IDを持つ既存のFastly アカウントに既に関連付けられている場合、Fastly設定を更新するまで起動できません。
-
既存のFastly アカウントのapexおよびサブドメイン設定を更新します。 複数のFastly アカウントと割り当てられたドメイン を参照してください。
Fastly サービスの検証またはデバッグ
サイト URLをテストし、応答で返されるヘッダー値を調べることで、Adobe Commerce on cloud infrastructure サイトのパフォーマンスまたはキャッシュの問題をトラブルシューティングできます。
Fastlyでライブサイトをチェックする
Fastly APIを使用して、ライブサイトから返されたFastly-Magento-VCL-UploadedおよびX-Cache応答ヘッダーを確認します。
Fastly API リクエストは、Fastly拡張機能を通じて渡され、オリジンサーバーから応答を取得します。 応答が誤ったヘッダーを返す場合は、 オリジンサーバーを直接テストします。
応答ヘッダーを確認するには:
-
ターミナルで、次の
curlコマンドを使用して、ライブサイト URLをテストします。code language-bash curl https://<live URL> -vo /dev/null -H Fastly-Debug:1静的ルートを設定していないか、ライブサイト上のドメインのDNS設定を完了していない場合は、DNS名前解決を回避する
--resolveフラグを使用します。code language-bash curl -svo /dev/null --resolve '<your_hostname>:443:<IP-address-of-cache-node>' <https-URL>note NOTE --resolveオプションでこのコマンドを使用するには、SSL/TLS証明書を介してFastlyでTLSを有効にし、キャッシュノードのIP アドレスを見つける必要があります。 -
応答で、 ヘッダーを確認して、Fastlyが動作していることを確認します。 応答には、次の一意のヘッダーが表示されます。
code language-http < Fastly-Magento-VCL-Uploaded: 1.2.222 < X-Cache: HIT, MISS
ヘッダーに正しい値がない場合は、次の情報を参照してください。
Fastly キャッシュをバイパスしてAdobe Commerce サイトを確認する
Fastly サービスが誤ったヘッダーを返す場合は、Fastly キャッシュをバイパスするリクエストを送信できるVCL スニペットを作成できます。 Fastly キャッシュのバイパス を参照してください。
VCL スニペットを追加したら、cURL コマンドを使用して、指定したIP アドレスからオリジンサーバーにリクエストを送信します。 次に、応答にエラーがないか確認します。
キャッシュのHITおよびMISS レスポンスヘッダーを確認する
返された応答に次の情報が含まれていることを確認します。
-
X-Magento-Tagsヘッダーを含む -
Fastly-Module-Enabledヘッダーの値は、Yesまたはプロジェクト環境にインストールされているFastly for CDN Magento 2 モジュールのバージョン番号のいずれかです -
Cache-Control: max-ageが0より大きい
-
Pragma設定は
cacheです
cURL コマンド出力の次の抜粋は、Pragma、X-Magento-Tags、およびFastly-Module-Enabled ヘッダーの正しい値を示しています。
* STATE: INIT => CONNECT handle 0x600057800; line 1402 (connection #-5000)
* Rebuilt URL to: https://www.mymagento.biz.c.sv7gVom4qrpek.ent.magento.cloud/
* Added connection 0. The cache now contains 1 members
* Trying 192.0.2.31...
* STATE: CONNECT => WAITCONNECT handle 0x600057800; line 1455 (connection #0)
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Connected to www.mymagento.biz.c.sv7gVom4qrpek.ent.magento.cloud (54.229.163.31) port 443 (#0)
* STATE: WAITCONNECT => SENDPROTOCONNECT handle 0x600057800; line 1562 (connection #0)
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* ALPN, offering h2
... portion omitted for brevity ...
< Set-Cookie: mage-messages=%5B%5D; expires=Wed, 22-Nov-2017 17:39:58 GMT; Max-Age=31536000; path=/
< Pragma: cache
< Expires: Wed, 23 Nov 2016 17:39:56 GMT
< Cache-Control: max-age=86400, public, s-maxage=86400, stale-if-error=5, stale-while-revalidate=5
< X-Magento-Tags: cb_welcome_popup store cb cb_store_info_mobile cb_header_promotional_bar cb_store_info cb_discount-promo-bar cpg_2 cb_83 cb_81 cb_84 cb_85 cb_86 cb_87 cb_88 cb_89 p5646 catalog_product p5915 p6040 p6197 p6227 p7095 p6109 p6122 p6331 p7592 p7651 p7690
< Fastly-Module-Enabled: yes
< Strict-Transport-Security: max-age=31536000
< Content-Security-Policy: upgrade-insecure-requests
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< X-Frame-Options: SAMEORIGIN
< X-Platform-Server: i-dff64b52
<
* STATE: PERFORM => DONE handle 0x600057800; line 1955 (connection #0)
* multi_done
0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0
* Connection #0 to host www.mymagento.biz.c.sv7gVom4qrpek.ent.magento.cloud left intact
応答ヘッダーで見つかったエラーを解決する
この節では、Fastly APIを使用して応答ヘッダーを確認する際に返されるエラーを解決するための推奨事項を示します。
Fastly モジュールが有効になっていません
Fastly モジュールが有効になっていない場合(Fastly-Module-Enabled: no)またはヘッダーが見つからない場合は、SSHを使用してにプロジェクトにログインします。 次に、次のコマンドを実行して、モジュールのステータスを確認します。
php bin/magento module:status Fastly_Cdn
返されたステータスに基づいて、次の手順に従ってFastly設定を更新します。
-
Module does not exist- モジュールが存在しない場合は、統合ブランチでFastly CDN Module for Magento 2をインストールして設定します。 インストールが完了したら、モジュールを有効にして設定します。 Fastlyの設定を参照してください。 -
Module is disabled- Fastly モジュールが無効になっている場合は、ローカル環境のintegrationブランチで環境設定を更新して有効にします。 次に、ステージングと実稼動に変更をプッシュします。 拡張機能の管理を参照してください。構成管理を使用する場合は、実稼動環境またはステージング環境に変更をプッシュする前に、
app/etc/config.php設定ファイルでFastly CDN モジュールのステータスを確認してください。モジュールが
config.phpファイルで有効になっていない(Fastly_CDN => 0)場合は、ファイルを削除し、次のコマンドを実行して、最新の構成設定でconfig.phpを更新します。code language-bash bin/magento magento-cloud:scd-dump
Fastly VCLがアップロードされていない
Fastly VCLがアップロードされていない場合(Fastly-Magento-VCL-Uploaded: false)、管理者の「VCLをアップロード」オプションを使用してアップロードします。 Fastly VCL スニペットのアップロード を参照してください。
X-CacheにはMISSのみが含まれ、HITは含まれません
X-Cache ヘッダーにHIT (HIT, HITまたはHIT, MISS)が含まれる場合は、Fastlyがキャッシュされたコンテンツを正常に返すことを示します。
X-Cache ヘッダーがMISS, MISSで、HITが含まれていない場合は、curl コマンドを再度実行して、ページが最近キャッシュからパージされていないことを確認します。
同じ結果が得られた場合は、curl コマンド を使用し、応答ヘッダーを確認します。
PragmaはcacheですX-Magento-Tagsが存在しますCache-Control: max-ageが0より大きい
問題が解決しない場合は、別の拡張機能がこれらのヘッダーをリセットしている可能性があります。 ステージング環境で次の手順を繰り返します。すべての拡張機能を無効にし、それぞれの拡張機能を再度有効にして、どの拡張機能がヘッダーをリセットしているかを判断します。 問題の原因となる拡張機能を特定したら、実稼動環境で無効にする必要があります。
応答ヘッダーをリセットする拡張機能を特定するには:
-
管理者に ログインします。
-
Stores > Settings > Configuration > Advanced > Advancedに移動します。
-
右側のパネルの「モジュール出力を無効にする」セクションで、すべての拡張機能を見つけて無効にします。
-
「設定を保存」をクリックします。
-
システム/ツール/キャッシュ管理をクリックします。
-
「Magento キャッシュをフラッシュ」をクリックします。
-
Fastly ヘッダーに問題が発生する可能性がある各拡張機能について、次の手順を実行します。
-
一度に1つの拡張機能を有効にし、設定を保存し、Adobe Commerce キャッシュをフラッシュします。
-
curlコマンド を実行して、応答ヘッダーを確認します。
このプロセスを各拡張機能に対して繰り返します。 Fastly応答ヘッダーが表示されなくなった場合は、Fastlyで問題を引き起こす拡張機能を特定しました。
-
Fastly ヘッダーをリセットしている拡張機能を特定したら、拡張機能の開発者に連絡して詳細を確認してください。 サードパーティの拡張機能がFastly キャッシュで動作するように修正またはアップデートを提供することはできません。
Fastly設定のロールバック
カスタム VCL スニペットの更新またはその他のFastly設定の変更により、Adobe Commerce on cloud infrastructure サイトでエラーが発生または返される場合は、Fastly API activate コマンドを使用して以前のVCL バージョンにロールバックします。 管理者からVCL バージョンをロールバックすることはできません。
VCL バージョンをロールバックするには:
-
サービスで使用可能なVCL バージョンのリストを取得するには、次のコマンドを実行します
code language-bash curl -H "Fastly-Key: <FASTLY_API_TOKEN>" -H "Accept: application/json" https://api.fastly.com/service/<FASTLY_SERVICE_ID>/version -
次のコマンドを実行して、アクティブなVCL バージョンを指定したバージョンに変更します。
code language-bash curl -H "Fastly-Key: <FASTLY_API_TOKEN>" -H "Content-Type: application/x-www-form-urlencoded" -H "Accept: application/json" -X PUT https://api.fastly.com/service/<FASTLY_SERVICE_ID>/version/<VERSION_ID>/activate
Fastly APIを使用してVCLをレビューおよび管理する方法について詳しくは、APIを使用したVCLの管理を参照してください。