すべてのプロダクト
Search
ドキュメントセンター

Enterprise Distributed Application Service:外れ値削除を使用して Dubbo アプリケーションの可用性を確保

最終更新日:Mar 13, 2026

マイクロサービスモデルでは、コンシューマーがプロバイダー側のアプリケーションインスタンスの障害を検出できない場合、サービス呼び出しが影響を受け、コンシューマーのパフォーマンスやサービス可用性が低下する可能性があります。外れ値削除機能はアプリケーションインスタンスの可用性をモニターし、動的に調整することで、サービス呼び出しの成功率を高め、ビジネスの安定性およびサービス品質 (QoS) を向上させます。本トピックでは、外れ値削除ポリシーの作成方法について説明します。

背景情報

以下の図は例となるシナリオを示しています。あるシステムには A、B、C、D の 4 つのアプリケーションがあり、アプリケーション A がアプリケーション B、C、D を呼び出しています。アプリケーション B、C、D の一部のインスタンスが異常な状態です。赤い円で示されているように、アプリケーション B には異常インスタンスが 1 つ、アプリケーション C と D にはそれぞれ 2 つずつ存在します。アプリケーション A がこれらの異常インスタンスを検出できない場合、一部の呼び出しが失敗します。アプリケーション B、C、D の異常インスタンス数が増えると、アプリケーション A のパフォーマンスやサービス可用性に悪影響を及ぼす可能性があります。

アプリケーション A のパフォーマンスと可用性を保護するため、A に対して外れ値削除ポリシーを設定できます。ポリシーを設定すると、システムはアプリケーション B、C、D の各インスタンスのステータスをモニターし、異常なインスタンスを動的に削除します。その後、インスタンスが回復したことを確認次第、再度アプリケーションのインスタンスリストに追加され、呼び出しリクエストを処理できるようになります。

Outlier ejection diagram

外れ値削除のプロセスは次のとおりです。

  1. アプリケーション B、C、または D のインスタンスが異常になった場合、システムはその障害を検出します。その後、設定済みの インスタンス削除率しきい値 に基づいて、当該インスタンスを削除するかどうかを判断します。

  2. インスタンスが削除されると、アプリケーション A は B、C、D の異常インスタンスに呼び出しリクエストを転送しなくなります。

  3. システムは、設定済みの 回復検出単位時間 に基づき、削除されたインスタンスが回復しているかどうかのチェックを開始します。

  4. チェックごとに検出間隔が線形的に増加します。この間隔は 回復検出単位時間(デフォルトは 0.5 分)に基づきます。回復前の最大チェック回数 で指定された回数に達すると、システムは最長間隔で引き続き回復チェックを実施します。

  5. システムがインスタンスの回復を検出した場合、そのインスタンスをアプリケーションのインスタンスリストに再追加し、呼び出しリクエストを処理できるようにします。このとき、検出間隔は 回復検出単位時間(例:0.5 分)にリセットされます。

説明
  • プロバイダー側アプリケーションの異常インスタンス数がインスタンス削除率しきい値を超えた場合でも、指定された比率までしかインスタンスは削除されません。

  • プロバイダー側アプリケーションに利用可能なインスタンスが 1 つしか残っていない場合、そのインスタンスのエラーレートが指定されたしきい値を超えていても、削除されません。

外れ値削除ポリシーの作成

  1. にログインします

  2. 左側のナビゲーションウィンドウで、トラフィック管理 > マイクロサービスガバナンス > Dubbo を選択します。

  3. 左側のナビゲーションウィンドウで 外れ値削除 をクリックします。外れ値削除 ページで、[外れ値削除ポリシーの作成] をクリックします。

  4. [外れ値削除ポリシーの作成] パネルでパラメーターを設定し、[OK] をクリックします。

    構成項目

    説明

    マイクロサービス名前空間

    右側のリストからリージョンとマイクロサービス名前空間を選択します。

    ポリシー名

    外れ値削除ポリシーの名前です。大文字、小文字、数字、アンダースコア (_)、ハイフン (-) を使用でき、最大 64 文字まで指定できます。

    呼び出されるサービスのフレームワーク

    必要に応じて Spring CloudDubbo、または Service Mesh を選択します。

    適用対象アプリケーションの選択

    アプリケーションを選択し、> アイコンをクリックして 選択済みアプリケーション リストに追加します。

    アプリケーションを選択すると、そのアプリケーションが呼び出すすべてのアプリケーションの異常インスタンスが削除されます。削除期間中、適用対象アプリケーションからの呼び出しリクエストは異常インスタンスに転送されません。

    エラーレートしきい値

    呼び出されるアプリケーションのインスタンスのエラーレートが指定されたしきい値を超えた場合、そのインスタンスは削除されます。デフォルト値は 50% です。たとえば、統計用タイムウィンドウ内でインスタンスが 10 回呼び出され、そのうち 6 回が失敗した場合、エラーレートは 60% となり、設定済みのエラーレートしきい値 50% を超えるため、当該インスタンスはアプリケーションから削除されます。

    詳細設定

    展开 アイコンをクリックして 詳細設定 オプションを展開します。

    例外タイプ

    ネットワーク例外 および ネットワーク例外 + ビジネス例外 (Dubbo 例外) から選択します。

    説明
    • ネットワーク例外とは通常、Dubbo RpcException を指します。例として、ネットワークタイムアウトや、サーバー側のフル GC による遅延応答に起因するスレッドプールの枯渇などが挙げられます。

    • ビジネス例外とは通常、サーバー側でスローされる RunTimeException などの Dubbo BizException を指します。

    最小 QPS

    QPS(1 秒あたりのクエリ数)は統計用タイムウィンドウに基づいて計算されます。タイムウィンドウは、Dubbo 2.7 を使用するアプリケーションでは 15 秒、その他の Dubbo バージョンまたは Spring Cloud を使用するアプリケーションでは 10 秒です。タイムウィンドウ内(例:15 秒)でアプリケーションの QPS が指定されたしきい値に達すると、システムはエラーレートの分析を開始します。

    インスタンス削除率しきい値

    削除可能な異常インスタンスの最大比率です。このしきい値に達すると、それ以上異常インスタンスは削除されません。削除対象インスタンス数は切り捨てで計算されます。たとえば、アプリケーションに 6 個のインスタンスがあり、削除率を 60% に設定した場合、削除対象インスタンス数は 6 × 60% = 3.6 となり、ポリシーにより最大 3 個のインスタンスが削除されます。計算結果が 1 未満の場合は、インスタンスは削除されません。

    回復検出単位時間

    異常インスタンスが削除された後、回復しているかどうかをチェックする際の基本となる検出間隔です。この間隔は線形的に増加します。単位はミリ秒 (ms) で、デフォルト値は 30000 ms(0.5 分)です。

    累積未回復回数上限

    システムは異常インスタンスを継続的にチェックします。チェックごとに検出間隔が回復検出単位時間に基づき線形的に増加します。チェック回数が指定された最大値に達すると、システムは最長間隔で引き続き回復チェックを実施します。たとえば、回復検出単位時間 が 30000 ms、回復前の最大チェック回数 が 20 に設定されており、20 回目のチェック後にインスタンスがまだ回復していない場合、以降のチェックは 10 分(20 × 30000 ms)間隔で実行されます。インスタンスの回復が検出された場合、検出間隔は初期値(1 つの 回復検出単位時間)にリセットされます。

    説明

    回復前の最大チェック回数 は大きな値に設定しないでください。大きな値を設定すると、最大検出間隔が非常に長くなり、インスタンスがその間隔の早い段階で回復しても、システムは間隔終了まで待機してしまうため、インスタンスリソースが無駄になり、ビジネス呼び出しリクエストの処理が遅延します。

結果の確認

外れ値削除ポリシーを作成すると、この機能が有効になります。アプリケーションの 高度なモニタリング ページに移動し、モニタリング情報を確認してください。たとえば、トポロジ グラフで、呼び出しリクエストが依然として異常インスタンスに転送されているかどうかを確認できます。また、アプリケーション呼び出しの エラーレート/分 が指定された エラーレートしきい値 を超えているかどうかも確認できます。これにより、外れ値削除ポリシーが有効に機能しているかを判断できます。詳細については、「アプリケーション概要」をご参照ください。