OCAPI フックのサーキットブレーカー 23.1
フックのサーキットブレーカー機能は、フックのエラー率が上がったときにシステムを保護するので、安定性が高まり、処理時間が短縮されます。各フックタイプへの呼び出しは個別に追跡されます。
各拡張ポイントタイプには独自のフックのサーキットブレーカーのインスタンスがあり、そのフックの実行エラー率が追跡されます。サーキットブレーカーのステータスは、closed、open、half-open の 3 つのうちのいずれかです。通常は、closed です。いずれの時点においても、直近の 100 件のフック呼び出しに 50 件以上のエラーが発生した場合、次の処理がトリガーされます。
- サーキットブレーカーのステータスが
open
に変わります。この変更がログに記録されます。 - 60 秒間、エラーの発生している拡張ポイントの呼び出しから、HTTP ステータスコード
503 (Service Unavailable)
が、フォールトタイプHookCircuitBreakerException
とともに返されます。 - 60 秒が経過すると、サーキットブレーカーのステータスが
half-open
に変わります。この変更がログに記録されます。 - サーキットブレーカーは、エラーが発生している拡張ポイントへの次の 10 件の呼び出しを追跡します。5 件を超える呼び出しが失敗した場合は、ステップ 1 に戻ります。
- サーキットブレーカーのステータスが
closed
に変わり、フックへの呼び出しの追跡が再開されます。この変更がログに記録されます。
フック呼び出しが 503 (Service Unavailable)
エラーを返した場合は、Log Center を使用して原因を調査します。
- Business Manager で、管理 > サイトの開発 > 開発セットアップの順に移動します。
- 「ログファイル」セクションで、Log Center をクリックします。
- 「Day of Year (年間通算日)」を選択します。
- LCQL フィールドに「
HookCircuitBreaker
」と入力します。 - クエリのヒットで、HookInvocationException エントリを見つけ、そのエントリの Stack Trace UUID (スタックトレース UUID) リンクをクリックします。
- スタックトレースで、
Caused by
(原因) セクションを見つけます。フックエラーの原因に関する情報が含まれている可能性があります。以下のような原因が考えられます。- フックにリモート呼び出しが含まれているが応答がないため、フックがタイムアウトになる。この場合、代わりに非同期 OCAPI 呼び出しを試してください。
- フックスクリプトにエラーがある。コードを修正し、エラー処理の対策を追加することを考慮してください。
拡張ポイントとサポートされているリソースについての詳細は、Data API 23.1 の OCAPI フックと Shop API 23.1 の OCAPI フックを参照してください。