3.2.1 リクエストをスケジューリングする目的
規模の大きい業務システムでは,特定のJ2EEアプリケーションを実行しているJ2EEサーバに大量のリクエストが集中することがあります。それぞれのサーバの負荷を抑え,可用性を確保して業務を滞りなく進めるためには,リクエストの送り先を分散したり,一定時間内のリクエストの流量を制御したりすることが必要です。また,複数のJ2EEサーバで処理を分散する場合に,リクエストが送信された時点で負荷が最も掛かっていないJ2EEサーバに処理させることができれば,システム全体の処理性能を向上させられます。
これらを実現するのが,リクエストのスケジューリングです。これによって,それぞれのJ2EEサーバが持つ性能を十分に活用しながら,安定して稼働するシステムを構築できます。また,リクエストをスケジューリングすることで,特定のJ2EEサーバ,J2EEアプリケーションまたは業務処理プログラム(Enterprise Bean)にトラブルが発生した場合にも,該当する範囲だけを閉塞して縮退運転できるので,システム全体の可用性を高められます。
アプリケーションサーバでは,リクエストをスケジューリングすることで,次の6種類の機能を実現できます。
-
流量制御
J2EEサーバで一度に実行される処理数の最大値を制限することで,J2EEサーバの負荷を一定に抑え,安定した高いスループットを実現できます。
-
優先制御
クライアントに優先順位を付けておくことで,優先順位の高いクライアントからのリクエストを優先的に処理します。
-
同時実行数の動的変更
リクエストの同時実行数を一時的に変更したい場合に,CTMデーモンを停止しないで同時実行数を変更できます。
-
閉塞制御
特定のJ2EEアプリケーションに対するリクエストの受け付けを停止したり,リクエストを滞留したりすることで,システム全体を稼働させたままのメンテナンスを可能にします。これによって,システムの可用性が高められます。
-
負荷分散
J2EEサーバ間で負荷が均等になるように処理を分散して割り当て,システム全体の処理性能と可用性が高められます。
-
キューの滞留監視
スケジュールキューで滞留しているリクエストの数を監視できます。