サーキットブレーカー

プラットフォームを過度の負荷から保護することでプラットフォームの安定性を確保するために、カスタム API にはサーキット ブレーカーメカニズムが含まれています。この機能は、特定のエラーしきい値を超えた場合に API リクエストをブロックします。

サーキット ブレーカーは、登録されているすべてのエンドポイントに対して構成され、そのエンドポイントへの各受信要求はサーキット ブレーカーを通過します。サーキット ブレーカーがどのように動作するかは、対応するエンドポイントでの最近のスクリプト実行によって定義される内部状態によって異なります。回路ブレーカーはclosedopen``half-open

サーキット ブレーカーの既定の状態はclosedで、要求が実装スクリプトにパススルーできることを意味します。

実装スクリプトの実行でエラーが発生した場合は、このエラーが追跡されます。エラー率がしきい値の** 50 %**を超えると、このプロセスがトリガーされます。

  1. 内部状態が に変わりますopen。この変更がログに記録されます。
  2. ** 60 秒間、失敗したエンドポイントへの呼び出しは、エラーの種類custom-api-circuit-breaker-errorで HTTP ステータスコード 503 - Service Unavailable **を返します。
  3. 60 秒後、内部状態は に変わりますhalf-open。この変更がログに記録されます。
  4. サーキット ブレーカーは、障害が発生したエンドポイントへの次の** 10 **回のコールを追跡します。そのうちの 5 つ以上が失敗した場合は、手順 1 に戻ります。
  5. 内部状態がにclosed変わり、エンドポイントのブロックが解除されます。サーキット ブレーカーは、このエンドポイントへの要求の追跡を続行します。この変更がログに記録されます。

closedこの状態では、サーキット ブレーカーはエラー率を計算するために、過去** 100 件の要求を評価します。これは、回路ブレーカーが開いたときに少なくとも 50 **個が故障している必要があることを意味します。

カスタム API リクエストでタイプcustom-api-internal-server-errorまたはcustom-api-circuit-breaker-errorのエラーが返された場合は、Log Center を使用して原因を調査します。

  1. Business Manager で、管理 > サイトの開発 > 開発セットアップの順に移動します。
  2. 「ログファイル」_セクションで、「Log Center _」をクリックします*。*
  3. 「Day of Year (年間通算日)」を選択します。
  4. LCQL フィールドに「CustomApiCircuitBreaker」と入力します。
  5. クエリヒットで、エントリを探しCustomApiInvocationException、その** [Stack Trace UUID ** ] リンクをクリックします。
  6. スタックトレースで、Caused by (原因) セクションを見つけます。これには、障害の原因に関する情報が含まれている可能性があります。以下のような原因が考えられます。
  • スクリプトには、応答を返さないリモート呼び出しが含まれているため、スクリプトの実行がタイムアウトします。この場合は、代わりに非同期呼び出しを行ってみてください。
  • スクリプトにエラーが含まれています。コードを修正し、エラー処理の対策を追加することを考慮してください。