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 プログラム作成の手引」を参照してください。