この章では、Oracle Service Busのスロットを有効化および使用する方法について説明します。
スロットはビジネス・サービスへのメッセージ・トラフィック量を制御し、通信量の多いビジネス・サービスにおけるメッセージのオーバーロードを回避することでパフォーマンスの向上と安定性を改善する際に役立ちます。
この章の内容は次のとおりです。
ビジネス・サービスのスロットルは、「ビジネス・サービスの表示」ページの「操作設定」タブから有効にする必要があります。このタブの「スロットル」で、「スロットルの状態」の「有効化」チェック・ボックスを選択します。ビジネス・サービスのスロットルを有効にする際には、「最大同時実行性」の値を指定する必要があります。ビジネス・サービスに対する「スロットル・キュー」および「メッセージの有効期限」を指定する必要もあります。詳細は、50.2項「スロットルの操作設定」および26.9項「ビジネス・サービスの操作設定の構成」を参照してください。
表50-1は、スロットルにおける重要な定義を示します。
表50-1 重要な定義
用語 | 定義 |
---|---|
スロットル・キュー |
ビジネス・サービスが最大同時実行性の値に達したときにメッセージが格納される優先キュー。優先度が高いメッセージから処理が実行されます。優先度が同じである場合は、先入れ先出し方式で処理されます。メッセージの優先度は、ルーティング・オプションを使用して割り当てることができます。 注意:
スロットル・キューは、インメモリー・キューです。このキューに置かれているメッセージは、サーバー障害が発生した場合やサーバーを起動した場合に回復できません。 ビジネス・サービスの削除または名前変更を行うと、スロットル・キュー内のすべてのメッセージが破棄されます。 |
メッセージの優先度 |
スロットル・キューに置かれているメッセージの優先度。 |
期限切れのメッセージ |
メッセージの有効期限の値を超える期間、スロットル・キューに置かれているメッセージ。メッセージの有効期限の詳細は、表50-2を参照してください。 |
表50-2は、スロットルの操作設定を示します。
表50-2 スロットルの操作設定
操作設定 | 使用目的 |
---|---|
スロットルの状態 |
ビジネス・サービスのスロットルを有効または無効にします。 注意: 実行時にビジネス・サービスのスロットルを無効にすると、スロットル・キュー内のすべてのメッセージはスロットルを使用せずに処理されます。 |
最大同時実行性 |
ビジネス・サービスで同時に処理できるメッセージ数を制限します。この値は、正の整数でなければなりません。このしきい値に達すると、このビジネス・サービスに対するすべての着信メッセージは、ビジネス・サービスがさらにメッセージを受け取れる状態になるまで、スロットル・キューに置かれます。 この設定を変更すると、新しいメッセージとキュー内に既に存在するメッセージの両方に影響します。値を大きくすると、Oracle Service Busランタイムにより、キュー内のメッセージの処理後に、より多くのメッセージをビジネス・サービスに送信できるようになります。値を小さくすると、同時実行性の設定値が新しいしきい値を下回るまで、新しいメッセージはすべてスロットル・キューに置かれます(スロットル・キューを定義している場合)。スロットル・キューを定義していない場合、メッセージは破棄されます。 クラスタ環境では、ビジネス・サービスで同時に処理できるメッセージの数は、管理対象サーバー間で均等に分割されます。 注意: この操作設定は、ビジネス・サービスに対してスロットルを有効にしている場合にのみ設定できます。 |
スロットル・キュー(操作設定) |
スロットル・キュー内のメッセージの数を制限します。スロットル・キューの長さは、正の整数でなければなりません。ビジネス・サービスに対する最大同時実行制約の値を超える着信メッセージは、すべてスロットル・キューに配置されます。キューがいっぱいになると、キュー内で最も優先度の低いメッセージは、より高い優先度を持つ新しい着信メッセージの発生時に削除されます。 この長さを0に設定した場合、ビジネス・サービスにスロットル・キューがないことを示します。 この設定に対するすべての変更は、動的に実装されます。この設定の値を小さくすると、新しい長さを超えるメッセージはすべて破棄されます。 注意: この操作設定は、ビジネス・サービスに対してスロットルを有効にしている場合にのみ設定できます。 クラスタ環境では、この設定値は、管理対象サーバー間で均等に分割されます。 |
メッセージの有効期限 |
ビジネス・サービスのスロットル・キューに置かれたメッセージの最大保持時間(ミリ秒単位)を制限します。この値は、正の整数でなければなりません。この時間が経過すると、メッセージはキューから削除されます。このようなメッセージは、期限切れのメッセージと呼ばれます。 サービスに対するメッセージの有効期限を0に設定すると、このサービスのスロットル・キュー内のメッセージは期限切れになりません。 この設定の値を大きくすると、新しいメッセージとキュー内に既に存在するメッセージの有効期限が延長されます。この設定の値を小さくすると、新しい値を超えたすべてのメッセージは即時に破棄されます。 注意: この操作設定は、ビジネス・サービスに対してスロットルを有効にしている場合にのみ設定できます。 |
表50-3は、スロットルに使用できるメトリックを示します。
表50-3 スロットルのメトリック
メトリック | 説明 |
---|---|
最大スロットル時間 |
スロットル・キュー内のすべてのメッセージの最大保持時間(ミリ秒単位)。ビジネス・サービスのこの値が0よりも大きい場合、メッセージはそのビジネス・サービスのキューに置かれます。 |
最小スロットル時間 |
スロットル・キュー内のすべてのメッセージの最小保持時間(ミリ秒単位)。この値が0に等しい場合、一部のメッセージはスロットル・キューに置かれません。 |
平均スロットル時間 |
スロットル・キュー内のすべてのメッセージの平均保持時間(ミリ秒単位)。 |
スロットルのメトリックの詳細は、50.4項「スロットル・メトリックにアクセスする方法」を参照してください。
スロットルのメトリックには、Oracle Service Bus管理コンソールの「サービスのモニターの詳細」ページにある「サービス」タブからアクセスできます。現在の集約間隔および最後のリセット以降の間隔に対するメトリックを取得できます。詳細は、46.5.1項「Oracle Service Bus管理コンソールからサービスの統計にアクセスする方法」を参照してください。
JMXモニタリングAPIを使用してメトリックにアクセスすることもできます。詳細は、46.9.3項「ダッシュボードでのSLAアラートの表示」を参照してください。
SLAアラート・ルールは、スロットルのメトリックに基づいて定義できます。つまり、平均スロットル時間に基づいてアラート・ルールを定義できます。詳細は、26.23項「アラート・ルールの作成と編集」を参照してください。
このトピックでは、複数のエンドポイントURIを使用するビジネス・サービスのスロットルを使用する方法について説明します。
Oracle Service Busでは、ビジネス・サービスを複数のエンドポイントURIに関連付けることができます。エンドポイントURIの詳細は、第48章「ビジネス・サービスのエンドポイントURIの管理」を参照してください。ビジネス・サービスを複数のURIに関連付ける際には、個々のURIではなく、そのビジネス・サービスの最大同時実行性を構成する必要があります。各URIの最大同時実行性は、全体の最大同時実行性とロード・バランシングの重みにより、次の数式に基づいて内部的に設定されます。
URI-specific max_concurrency = [User configured max_concurrency] X [weight]
たとえば、3つのエンドポイントURI eu1
、eu2
およびeu3
を使用するビジネス・サービスB
を考えてみます。ロード・バランシング・アルゴリズムは、ランダムな重みベースであると定義されます。URIの重みは、それぞれ1
、2
および3
です。ビジネス・サービスの最大同時実行性を10と定義したと仮定すると、URI固有の最大同時実行性は、10
、20
および30
です。また、ビジネス・サービスB
の有効最大同時実行性は60
です。重みが3の最終エンドポイントURIがオフライン状態である場合、このビジネス・サービスの有効最大同時実行性は30
です。
注意: ロード・バランシングが スロットルは、ルーティング・オプションでエンドポイントURIがオーバーライドされているメッセージには適用されません。 |