2.4.4 リクエストの閉塞制御

閉塞制御サービス閉塞)は,特定のTSCルートアクセプタに対するリクエストの受け付けを停止したり,リクエストを滞留させたりする機能です。これによって,システム全体を停止させないでTSCユーザオブジェクトの入れ替えや再起動を可能にして,システムの可用性を高められます。

閉塞制御でできることは,次のとおりです。

<この項の構成>
(1) サーバアプリケーションの閉塞制御
(2) スケジュール用キューの閉塞制御
(3) サーバアプリケーション異常終了時のリクエスト保持

(1) サーバアプリケーションの閉塞制御

TSCルートアクセプタを非活性化するときに,スケジュール用キューに登録されたリクエストを破棄して,TSCユーザオブジェクトを停止できます。キューを共有する最後のTSCルートアクセプタが停止する場合,TSCデーモンは,スケジュール用キューの入り口を閉じてサービスを停止して,それ以上リクエストを受け付けないようにします。

サーバアプリケーションの閉塞制御は,tscstopprcコマンドで指定できます。

サーバアプリケーションの閉塞制御の概要を次の図に示します。

図2-9 サーバアプリケーションの閉塞制御の概要

[図データ]

(2) スケジュール用キューの閉塞制御

スケジュール用キューに対して,直接閉塞を実行することもできます。これによって,複数のTSCルートアクセプタでスケジュール用キューが共有されている場合に,一度に複数のTSCルートアクセプタを停止できます。スケジュール用キューに登録されているリクエストについては,破棄するか,一定の時間処理を続けるかを選択できます。処理を続ける場合は,一定の時間内に処理ができなければ強制的に破棄するように,タイムアウト時間が指定できます。また,仕掛かり中のリクエストについては,処理が続行されます。

スケジュール用キューの閉塞が指示されると,TSCデーモンは,スケジュール用キューの入り口を閉じてサービスを停止して,それ以上リクエストを受け付けないようにします。また,すでにスケジュール用キューに登録されたリクエストは,設定に従って,破棄するか,または処理を実行してからスケジュール用キューの閉塞を完了します。リクエストを破棄する場合は,キューに登録されていたリクエストの処理はすべてエラーとしてクライアントアプリケーションに返されます。処理を実行してから閉塞する場合は,一定時間処理を継続して,時間内に終了しなかった処理がエラーとして返されます。

スケジュール用キューの閉塞制御は,tscholdraコマンドで閉塞を,tscrlesraコマンドで閉塞解除を指定できます。

スケジュール用キューの閉塞制御の概要を次の図に示します。

図2-10 スケジュール用キューの閉塞制御の概要

[図データ]

(3) サーバアプリケーション異常終了時のリクエスト保持

サーバアプリケーション異常終了時に,スケジュール用キューのリクエストを一定時間保持します。これによって,サーバアプリケーションが異常終了した場合でも,すぐにユーザにエラーは返されません。さらに,サーバアプリケーションが再起動するまでの間,クライアントアプリケーションからのリクエストは受け付け続けます。リクエストは,スケジュール用キューの最大リクエスト登録数分まで受け付けられます。このため,サーバアプリケーションに障害が発生した場合でも,すぐに再起動すれば,クライアントアプリケーションに障害を気づかせないで運用を続けられます。ただし,リクエストがスケジュール用キューの最大リクエスト登録数を超えた場合は,クライアントアプリケーションにエラーが返されます。

サーバアプリケーション異常終了時のリクエスト保持は,tscstartコマンドの-TSCQueueDeleteWaitオプションで指定できます。

サーバアプリケーション異常終了時のリクエスト保持の概要を次の図に示します。

図2-11 サーバアプリケーション異常終了時のリクエスト保持の概要

[図データ]