Topics
Enterprise Architecture
ワークロード(作業負荷)管理は、クライアントで生成された作業を、アプリケーションサーバが受理して処理する方法を説明するために使われる用語で す。BEA WebLogic Server 9.0では、以前のリリースにはなかった、作業負荷管理のための新しい概念がいくつか導入されました。これらの概念は、以前のリリースで定義されていた実 行キューに取って代わるもので、作業の優先順位付け、スレッドプール管理、過負荷保護の考え方を含んでいます。この解説記事では、作業負荷管理が WebLogic Server 9.0ではどのように処理されるか、また、それが以前のリリースとどのように異なるかについて説明します。
WebLogic Server 9.0より前のリリースでは、スレッド数が固定、かつ作業キューの長さが未定の状態で実行キューを設定しなければなりませんでした。しかし、スレッド数の ような低レベルのカーネル属性を直接扱うことには問題がありました。管理者は次のような困難に直面していました。
WebLogic Server 9.0を使用すると、管理者は専用の実行キューを設定する必要がなくなり、実行キューが理解できる言語でアプリケーションの要件を記述することができるようになります。主な機能を以下に示します。
以降のセクションでは、これらの機能についてさらに詳しく説明していきます。
WebLogic Server 9.0には、すべてのアプリケーションからの要求用に単一のスレッドプールがあります。同様に、保留中の作業はすべて、共通の優先度キューに入れられま す。スレッド数は、全体のスループットが最大になるように自動的に調整されます。要求の優先度は、予め決められている目標を満たすように、動的に内部で計 算されます。管理者は、フェアシェア目標や応答時間目標のようなアプリケーションレベルのパラメータを使用して、目標を設定するだけです。
以前のリリースでは、サーブレットやRMI要求は、それぞれ実行キューにマッピングされたディスパッチポリシーに関連付けられていました。明確な ディスパッチポリシーを持たない要求は、サーバ全体のデフォルトの実行キューを使用します。WebLogic Server 9.0でも、要求は依然としてディスパッチポリシーに関連付けられています。ただし、ディスパッチポリシーは、実行キューではなく、 ワークマネージャにマッピングされています。 ここで説明するワークマネージャの概念は、5ページで説明する「タイマーおよびワークマネージャ仕様」とは全く異なります。
明確なディスパッチポリシーを持たない要求は、そのアプリケーションのデフォルトのワークマネージャを使用します。つまり、各アプリケーションは、 それぞれ固有のデフォルトワークマネージャを持っています。このデフォルトのワークマネージャは他のアプリケーションと共有されません。この区別が重要な 点です。実行キューは常にグローバルであるのに対して、ワークマネージャは常にアプリケーションスコープを持っています。コンソールでグローバルに定義さ れたワークマネージャでさえも、実行時にはアプリケーションスコープを持ちます。つまり、各アプリケーションは、他とは異なる独自の実行時インスタンスを 持ちます。ただし、これらのすべてのインスタンスは、フェアシェア目標のような同じ性質を共有します。これによって、アプリケーションレイヤで作業を追跡 できると同時に、個々のアプリケーションの優れたサスペンションのような機能を提供できます。
先に述べたように、サーブレットやRMI要求は、それぞれ1つのワークマネージャに関連付けられます。デフォルトでは、すべての要求が、そのアプリ ケーションのデフォルトのワークマネージャに関連付けられます。要求を特定のワークマネージャに関連付けるために、ディスパッチポリシー要素が使われま す。ワークマネージャは、アプリケーションスコープ内で定義されているか、または、サーバレベルでグローバルに定義されています。ディスパッチポリシーの 使い方については、後のセクションで例を示します。
実行キューと、新しいスレッドスケジューリングモデルの主な違いの1つは、スレッド数を設定する必要がないところです。以前のリリースでは、ユーザ が、新たにスレッドプールを定義して、デッドロックを回避して差別化されたサービスを提供できるように、そのサイズを設定していました。しかし、最適なス ループットを達成し、デッドロックを回避できるように、実運用環境で必要なスレッド数を正確に決定することは極めて困難です。WebLogic Server 9.0では、デッドロックを回避し、同時実行制約に基づいて最適なスループットを達成できるように、スレッド数が動的に自動調整されます。これによって、 差別化されたサービスのための目標も達成できます。これらの目標は、フェアシェア目標または応答時間目標と呼ばれます。これについては、次のセクションで 説明します。
自動チューニングされたスレッドプールは、2秒ごとに全体のスループットを監視し、収集したデータを使用して、スレッド数を変更する必要があるかど うかを判断します。スレッド数を増やす、または減らす必要があるかどうかを判断するアルゴリズムでは、現在のスレッド数、測定されたスループット、および 過去の履歴が考慮されます。そして、必要に応じて、自動的に、新しいスレッドがプールに追加されたり、スレッドがプールから削除されます。