Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Server Base Enterprise Option 使用の手引


3.6.2 サービスのスケジュール

TP1/EEのサービスをスケジュールする方法について説明します。

〈この項の構成〉

(1) 処理キューによるスケジュール制御

TP1/EEのすべてのトランザクションは,TP1/EEで制御する処理キューとして登録されます。処理キューは,処理スレッドがサービス単位にラウンドロビン方式で引き出します。したがって,特定のサービスに偏らないように,トランザクションを効率良く処理できます。

処理キューによるスケジュール制御の運用方法については,「6.9 処理キュー制御機能の運用」を参照してください。

(2) 処理スレッドの動的制御

TP1/EEでは,システム開始時に通常処理する通常処理スレッドとともに,予備用に処理する予備処理スレッドを生成します。プロセス関連定義のreserve_thread_noオペランドを省略するか,0を指定した場合,予備処理スレッドは作成されません。通常処理スレッド数はプロセス関連定義のthread_noオペランドで,予備処理スレッド数はreserve_thread_noオペランドで指定します。

なお,プロセス関連定義のreserve_thread_noオペランドを指定し,プロセス関連定義のreserve_start_pce_noオペランドを省略または0を指定した場合でも,予備処理スレッドは作成されません。

通常処理スレッド数を10,予備処理スレッド数を5と定義した場合に,トラフィックが低い状態では通常処理スレッド数(10)分だけ起動します。特定のサービスのトラフィックが高い状態では,通常処理スレッド数(10)に加えて予備処理スレッド数(5)分を起動します。

処理スレッドの運用方法については,「6.10 処理スレッド動的増加機能の運用」を参照してください。

(3) サービスの閉塞

トランザクションに異常が発生した場合,サービスを閉塞させることで,処理を一時的に止められます。UAPに異常が発生し,スレッドダウンまたはプロセスダウンした場合に,サービスを自動的に閉塞させるかどうかをプロセス関連定義のservice_holdオペランド,service_hold_watch_useオペランド,およびユーザサービス関連定義のservice_attr定義コマンドで指定できます。また,任意のタイミングでサービスを閉塞させたい場合は,eedctsvコマンドを実行するか,ee_thd_abdctl関数を呼び出します。

サービスの閉塞中にトランザクション起動要求があった場合,エラートランザクションが起動され,ユーザが任意に決着できるようになります。サービス閉塞を解除してサービスを再開始したい場合は,eeactsvコマンドを実行するか,ee_thd_abdctl関数を呼び出します。

なお,サービスグループ単位で閉塞させたい場合は,TP1/EEを停止させてください。TP1/EE停止後,プロセスの回復処理をした場合,サービスの閉塞状態は引き継がれます。

(4) タイマトランザクション制御

タイマトランザクションは,一定時間経過後に実行する業務処理のトランザクションです。時刻または経過時間を指定して,サービストランザクションと同じサービスに登録すると,各サービスと連動して業務処理を実行できます。タイマトランザクションの起動方式には,即時登録方式とトランザクション同期登録方式の2種類があります。

タイマトランザクションの起動は,ee_tim_execap関数で設定します。設定したタイマトランザクションは,ee_tim_execap_cancel関数で取り消せます。

タイマトランザクションの詳細については,マニュアル「TP1/Server Base Enterprise Option プログラム作成の手引」を参照してください。