システム保護機能は、さまざまなシナリオで予期しない状況を処理するために、ノードレベルのトラフィック保護機能を提供します。たとえば、インターフェースにトラフィック保護ルールが設定されていない場合、インターフェースのトラフィックが急増すると、システム保護機能が基本的なトラフィック保護機能を提供して、アプリケーションの安定性を確保できます。マイクロサービスガバナンスは、サーバーとクライアントのトラフィックに対して幅広い保護機能を提供します。これらの機能には、適応型過負荷保護、1 秒あたりの合計クエリ数(QPS)に基づく調整、合計同時実行数に基づく調整、異常な呼び出しのサーキットブレーカー、低速な呼び出しのサーキットブレーカーが含まれます。
システム保護とトラフィック保護の関係の詳細については、このトピックのシステム保護とトラフィック保護の関係をご参照ください。
前提条件
マイクロサービスガバナンス Enterprise Edition がアクティブ化されていること。詳細については、マイクロサービスガバナンスのアクティブ化をご参照ください。
アプリケーションに対してマイクロサービスガバナンスが有効になっていること。詳細については、ACK または ACS クラスタ内の Java マイクロサービスアプリケーションに対してマイクロサービスガバナンスを有効にするとECS インスタンス上のマイクロサービスアプリケーションに対してマイクロサービスガバナンスを有効にするをご参照ください。
手順
MSE コンソールにログインし、上部のナビゲーションバーでリージョンを選択します。
左側のナビゲーションペインで、Microservices Governance > Application Governance を選択します。
Application list ページで、目的のアプリケーションのリソースカードをクリックします。左側のナビゲーションペインで、[トラフィック管理] をクリックします。
[システム保護] タブをクリックし、関連機能を設定します。
適応型過負荷保護
適応型過負荷保護を使用するには、エージェントのバージョンが V3.1.4 以降であることを確認する必要があります。
説明
適応型過負荷保護機能は、CPU 使用率をシステム負荷の測定基準として使用し、サーバートラフィックの調整率を適応的に調整します。適応型過負荷保護機能は、予期しないトラフィックの急増シナリオにおいても、CPU 使用率を設定されたしきい値の周りの狭い範囲内で変動させることができます。
有効範囲
適応型過負荷保護はすべてのサーバーインターフェースに有効であり、トラフィック保護ルールよりも優先度が低くなります。
シナリオ
適応型過負荷保護は、サーバーインターフェースに CPU ベースの基本的な保護を提供し、CPU に依存するアプリケーションに適しています。インターフェースで予期しないトラフィックの急増が発生すると、システム CPU 負荷が増加します。その結果、コアインターフェースの応答時間(RT)が増加します。
定常状態の CPU 使用率は、さまざまなアプリケーションのビジネスによって異なります。ストレステストまたは履歴データを使用して、定常状態での最大 CPU 使用率を決定し、しきい値としてより大きな値を設定できます。
GUI の説明
「適応型過負荷保護」セクションの左側には、適応型過負荷保護イベントが表示されます。セクションの右側には、過去 5 分間の各アプリケーションノードの平均 CPU 使用率の傾向が表示されます。
アルゴリズムに基づいて調整ステータスが変化したことを示すイベントがノードに対して報告されます。調整の開始、動作、終了時にシステムがイベントを生成します。
イベントの「アクション」列にある「表示」をクリックすると、特定のノード IP アドレスに対応する CPU 使用率をクエリし、イベントが報告された間隔中のデータを再生できます。これにより、イベントが報告されたときのノード情報(CPU 使用率、調整確率など)を観察できます。
パラメータ | 説明 |
オン |
|
Vcpu 使用率 | 想定される CPU 使用率のしきい値。適応型過負荷保護が有効になっている場合、システムはアルゴリズムを使用して、実際の CPU 使用率と設定された CPU 使用率のしきい値に基づいて、インターフェース調整をトリガーする確率を適応的に調整します。これにより、システムは高負荷シナリオで特定のリクエストを拒否し、CPU 使用率を設定されたしきい値の周りの狭い範囲内で変動させることができます。 |
例外設定 | 詳細については、例外設定をご参照ください。 |
合計 QPS に基づく調整
説明
合計 QPS に基づく調整により、システムはノードの合計 QPS を測定できます。合計 QPS は、単一ノード上のすべてのサーバーインターフェースの QPS の合計です。合計 QPS が設定されたしきい値を超えると、システムはリクエストの調整を実行します。
合計 QPS に基づく調整を実装するには、エージェントバージョンが 4.2.0 以降であることを確認する必要があります。
有効範囲
合計 QPS に基づく調整はすべてのサーバーインターフェースに有効であり、トラフィック保護ルールよりも優先度が低くなります。
シナリオ
一部のシステム動作のパフォーマンスは、CPU 使用率に関連していない場合があります。CPU 使用率が低いシナリオでは、メモリ、ネットワーク、またはその他のオブジェクトに関連する問題が原因で、特定のアプリケーションのパフォーマンスが低下する可能性があります。合計 QPS に基づく調整を有効にすると、システムはノードの合計 QPS に基づいてリクエストを調整し、トラフィックベースの保護方法を提供します。
インターフェースで予期しないトラフィックの急増が発生すると、リソースの競合が発生し、リソースが不足します。その結果、コアインターフェースに悪影響が及びます。
ストレステストまたは履歴データを使用して、定常状態でのノードの合計 QPS を決定し、しきい値としてより大きな値を設定できます。
GUI の説明
「合計 QPS 調整」セクションの左側には、合計 QPS に基づく調整のイベントが表示されます。セクションの右側には、過去 5 分間の各アプリケーションノードの平均合計 QPS の傾向が表示されます。
過去 5 分間に合計 QPS に基づいてリクエストが調整されたノードとインターフェースに対してイベントが報告されます。イベント報告間隔は 5 分です。
イベントの「アクション」列にある「表示」をクリックすると、特定のノード IP アドレスに対応する合計 QPS をクエリし、イベントが報告された間隔中のデータを再生できます。これにより、関連ノードの合計 QPS を観察し、イベントが報告されたときに調整が期待どおりに機能しているかどうかを確認できます。インターフェースやノードのデータなどの詳細情報を表示する必要がある場合は、「API の詳細」または「ノードの詳細」ページに移動できます。ページリダイレクト機能は後日提供されます。
パラメータ | 説明 |
オン |
|
合計 QPS しきい値 | ノードの合計 QPS しきい値。 |
例外設定 | 詳細については、例外設定をご参照ください。 |
合計同時実行数に基づく調整
説明
合計同時実行数に基づく調整により、システムはノードの合計同時実行数を測定できます。合計同時実行数は、単一ノード上のすべてのサーバーインターフェースの同時実行数の合計です。合計同時実行数が設定されたしきい値を超えると、システムはリクエストの調整を実行します。
合計同時実行数に基づく調整を実装するには、エージェントバージョンが 4.2.0 以降であることを確認する必要があります。
有効範囲
合計同時実行数に基づく調整はすべてのサーバーインターフェースに有効であり、トラフィック保護ルールよりも優先度が低くなります。
シナリオ
呼び出しの RT が高い場合(ほとんどの場合 1 秒以上)、合計 QPS に基づく調整を実行すると明らかな問題が発生します。スレッドプール、メモリリソース、接続プールなどのシステムリソースが使用されている場合、リクエストはキューに入れられ、インターフェース RT が増加します。この場合、QPS に基づいてのみ調整を実行すると、1 秒あたりに開始されるリクエストの数は少なくなります。ただし、キューに入れられたリクエストは数秒で処理できません。その結果、さらに多くのリクエストがキューに入れられ、古いリクエストと新しいリクエストの両方の RT が大幅に増加します。合計 QPS に基づく調整と合計同時実行数に基づく調整を一緒に使用すると、特定のリクエストが処理されていない場合、システムは新しいリクエストを直接拒否します。システムがリクエストを処理した後、システムは後続のリクエストを許可し、より短いキューイング期間でリクエスト処理を完了します。このようにして、リクエストの成功率と平均 RT を大幅に向上させることができます。
インターフェースで予期しないトラフィックの急増が発生すると、リソースの競合が発生し、リソースが不足し、リクエストがキューに入れられます。その結果、すべてのリクエストの RT が増加します。
ストレステストまたは履歴データを使用して、定常状態でのノードの合計同時実行数を決定し、しきい値としてより大きな値を設定できます。
GUI の説明
「合計同時実行数調整」セクションの左側には、合計同時実行数に基づく調整のイベントが表示されます。セクションの右側には、過去 5 分間の各アプリケーションノードの平均合計同時実行数の傾向が表示されます。
過去 5 分間に合計同時実行数に基づいてリクエストが調整されたノードとインターフェースに対してイベントが報告されます。イベント報告間隔は 5 分です。
イベントの「アクション」列にある「表示」をクリックすると、特定のノード IP アドレスに対応する合計同時実行数をクエリし、イベントが報告された間隔中のデータを再生できます。これにより、関連ノードの合計同時実行数を観察し、イベントが報告されたときに調整が期待どおりに機能しているかどうかを確認できます。インターフェースやノードのデータなどの詳細情報を表示する必要がある場合は、「API の詳細」または「ノードの詳細」ページに移動できます。ページリダイレクト機能は後日提供されます。
パラメータ | 説明 |
オン |
|
合計同時実行数しきい値 | ノードの合計同時実行数しきい値。 |
例外設定 | 詳細については、例外設定をご参照ください。 |
異常な呼び出しのサーキットブレーカー
説明
異常な呼び出しのサーキットブレーカーにより、システムは各クライアントインターフェースの異常な呼び出しの割合を測定できます。異常な呼び出しの割合が設定されたしきい値を超えると、システムはインターフェースのサーキットブレーカーをトリガーします。サーキットブレーカー期間中、インターフェースはすぐに失敗し、システムは特定の間隔で検出リクエストを送信します。リクエストが成功すると、サーキットブレーカープロセスが終了します。
異常な呼び出しのサーキットブレーカーを実装するには、エージェントバージョンが 4.2.0 以降であることを確認する必要があります。
有効範囲
異常な呼び出しのサーキットブレーカーは、インターフェースレベルのサーキットブレーカールールが設定されているインターフェースを除き、すべてのクライアントインターフェースに有効です。
シナリオ
異常な呼び出しのサーキットブレーカーは、2 種類のシナリオに適しています。
タイムアウトシナリオ: クライアントインターフェースでタイムアウトの問題が頻繁に発生する場合、サービスプロバイダーには高い確率で例外が発生します。これにより、呼び出し元アプリケーションのより多くのリクエストがキューに入れられ、アプリケーションの他のインターフェースに影響が及びます。これらのシナリオでは、サーキットブレーカーを使用すると、サービスプロバイダーは短時間で失敗し、リクエストのキューイングを防ぐことができます。
タイムアウト以外のシナリオ: クライアントインターフェースでタイムアウト以外の問題が頻繁に発生する場合、異常な呼び出しのサーキットブレーカーを使用すると、システムはユーザー処理のために関連するエラーを報告できます。これにより、問題の影響を最小限に抑え、問題発生時のユーザーエクスペリエンスを最適化します。
GUI の説明
「異常な呼び出しのサーキットブレーカー」セクションの左側には、異常な呼び出しのサーキットブレーカーについて報告されたイベントが表示されます。セクションの右側には、過去 5 分間に異常な呼び出しの割合が高かった上位 10 のアプリケーションインターフェースが表示されます。
過去 5 分間に異常な呼び出しのサーキットブレーカーがトリガーされたノードとインターフェースに対してイベントが報告されます。イベント報告間隔は 5 分です。
パラメータ | 説明 |
オン |
|
サーキットブレーカーの割合しきい値(%) | インターフェースでサーキットブレーカーをトリガーするための異常な呼び出しの割合のしきい値。 |
例外設定 | 詳細については、例外設定をご参照ください。 |
詳細設定 | |
統計ウィンドウ期間(秒) | 統計時間ウィンドウの長さ。時間ウィンドウの長さは 1 秒から 120 分まで指定できます。 |
サーキットブレーカー期間(秒) | サーキットブレーカーが実装される期間。リソースにサーキットブレーカーが実装されている場合、すべてのリクエストは設定された期間ですぐに失敗します。 |
最小リクエスト数 | サーキットブレーカーをトリガーするための最小リクエスト数。現在の時間ウィンドウ内のリクエスト数がこのパラメータの値よりも少ない場合、サーキットブレーカールールが満たされていてもサーキットブレーカーはトリガーされません。 |
ヒューズ回復戦略 | サーキットブレーカー期間の経過後にサーキットブレーカーがサーキットブレーカーを再トリガーするかどうかを指定します。有効な値:
|
低速な呼び出しのサーキットブレーカー
説明
低速な呼び出しのサーキットブレーカーにより、システムは各クライアントインターフェースの低速な呼び出しの割合を測定できます。低速な呼び出しの割合が設定されたしきい値よりも大きい場合、システムはインターフェースのサーキットブレーカーをトリガーします。サーキットブレーカー期間中、インターフェースはすぐに失敗し、システムは特定の間隔で検出リクエストを送信します。リクエストが成功すると、サーキットブレーカープロセスが終了します。
低速な呼び出しのサーキットブレーカーを実装するには、エージェントバージョンが 4.2.0 以降であることを確認する必要があります。
有効範囲
低速な呼び出しのサーキットブレーカーは、インターフェースレベルのサーキットブレーカールールが設定されているインターフェースを除き、すべてのクライアントインターフェースに有効です。
シナリオ
低速な呼び出しのサーキットブレーカーは、異常な呼び出しのサーキットブレーカーもトリガーできるタイムアウトシナリオに適しています。異常な呼び出しのサーキットブレーカーとは異なり、低速な呼び出しのサーキットブレーカーを使用すると、タイムアウト設定を考慮せずに、低速な呼び出しを判断するために使用される RT 値を動的に調整できます。
GUI の説明
「低速な呼び出しのサーキットブレーカー」セクションの左側には、低速な呼び出しについて報告されたサーキットブレーカーイベントが表示されます。セクションの右側には、過去 5 分間のアプリケーションの上位 10 の平均 RT 値が表示されます。
過去 5 分間に低速な呼び出しのサーキットブレーカーがトリガーされたノードとインターフェースに対してイベントが報告されます。イベント報告間隔は 5 分です。
パラメータ | 説明 |
オン |
|
低速な呼び出し RT(ミリ秒) | RT 値がこのパラメータ値を超えるリクエスト呼び出しは、低速な呼び出しと見なされます。 |
劣化しきい値(%) | RT 値が「低速な呼び出し RT(ミリ秒)」の値よりも大きいリクエスト呼び出しの割合がこのパラメータで指定されたしきい値を超えると、サーキットブレーカーがトリガーされます。 |
例外設定 | 詳細については、例外設定をご参照ください。 |
詳細設定 | |
統計ウィンドウ期間(秒) | 統計時間ウィンドウの長さ。時間ウィンドウの長さは 1 秒から 120 分まで指定できます。 |
サーキットブレーカー期間(秒) | サーキットブレーカーが実装される期間。リソースにサーキットブレーカーが実装されている場合、すべてのリクエストは設定された期間ですぐに失敗します。 |
最小リクエスト数 | サーキットブレーカーをトリガーするための最小リクエスト数。現在の時間ウィンドウ内のリクエスト数がこのパラメータの値よりも少ない場合、サーキットブレーカールールが満たされていてもサーキットブレーカーはトリガーされません。 |
ヒューズ回復戦略 | サーキットブレーカー期間の経過後にサーキットブレーカーがサーキットブレーカーを再トリガーするかどうかを指定します。有効な値:
|
例外設定
説明
すべてのシステム保護機能に例外設定を構成できます。例外設定にリストされているインターフェースの場合、インターフェース上のリクエストはルールチェックなしで直接通過できます。
例外設定を構成するには、エージェントバージョンが 4.2.0 以降であることを確認する必要があります。
シナリオ
ほとんどの場合、ヘルスチェックインターフェースとシステムの主要インターフェースに対してのみ例外設定を構成する必要があります。ヘルスチェックインターフェースの場合、例外設定はノードのヘルスステータスへの影響を防ぎます。システムの主要インターフェースには、個別の調整制限が課せられます。システムの主要インターフェースは、システム全体の調整メカニズムの対象にならないことが想定されています。
GUI の説明
左側の「使用可能なインターフェース」セクションには、最近呼び出されたインターフェースが表示されます。表示されていないインターフェースの場合は、検索ボックスにインターフェース名を入力し、検索アイコンをクリックしてインターフェースを検索してから、右側の「選択されたインターフェース」セクションにインターフェースを追加できます。
FAQ
システム保護とトラフィック保護の関係
システム保護とトラフィック保護はどちらも、アプリケーションが定常状態にあることを保証できます。ただし、システム保護とトラフィック保護のシナリオとトラフィック損失は異なります。
調整がトリガーされると、システムは 429 HTTP ステータスコードを返します。カスタム設定はサポートされていません。
システム保護は、ノードレベルのメトリックに基づいてトラフィック保護を提供します。これにより、ほとんどのシナリオでアプリケーションが定常状態にあることが保証されます。システム保護はアプリケーションの側面から実装され、同じシステム保護ルールがアプリケーションのすべてのインターフェースに適用されます。ただし、アプリケーションのインターフェースは重要度が異なり、システム負荷への影響も異なります。トラフィック保護を使用すると、インターフェースごとに異なるしきい値を設定して、より多くのシナリオをカバーし、調整されるトラフィック量を最小限に抑えることができます。
システム保護とトラフィック保護はどちらも保護機能を提供できます。ただし、トラフィック保護は、シナリオカバレッジとトラフィック損失の点でより優れた保護パフォーマンスを提供します。トラフィック保護と比較して、システム保護ではより簡単な方法で設定を構成できます。したがって、システム保護とトラフィック保護を一緒に使用するベストプラクティスに従うことをお勧めします。システム保護はアプリケーションの安定性を確保するのに役立ち、トラフィック保護は、保護パフォーマンスを損なうことなく、きめ細かい設定に基づいて調整されるトラフィック量を削減するのに役立ちます。
参考資料
トラフィック保護ポリシーの詳細については、トラフィック保護をご参照ください。