1.4.6 アプリケーションの実行
ユーザサーバの開始と終了,およびプロセスの概要について説明します。
- 〈この項の構成〉
(1) ユーザサーバの開始と終了
ユーザサーバは,TP1/LiNKの開始と終了に合わせて開始,終了します。また,TP1/LiNKの稼働中にオペレータの操作でユーザサーバを開始させたり終了させたりすることもできます。
(2) プロセスの設定
ユーザサーバを実行するときには,OSの作業領域を使います。この作業領域の処理をプロセスといいます。TP1/LiNKでは,一つのユーザサーバを複数のプロセスで実行させて処理性能を上げられます。さらに,プロセスが増え過ぎてマシンのメモリを圧迫しないように,使うプロセスの総数を指定できます。
(3) プロセスの負荷分散(マルチサーバ)
一つのユーザサーバに対して複数のクライアントからサービスを要求されても,ユーザサーバの処理を複数のプロセスで並行して実行できます。このようなユーザサーバをマルチサーバといいます。
マルチサーバとして実行できるのは,SPPとして作成したユーザサーバです。SUPはマルチサーバの指定はできません。
マルチサーバの概要を次の図に示します。
|
(4) プロセスの種類
ユーザサーバは,TP1/LiNKの稼働中にプロセスを確保しておくことも,必要に応じて動的に確保することもできます。TP1/LiNKの稼働中に確保されているかどうかで,プロセスを常駐プロセスと非常駐プロセスに分けています。
常駐プロセスと非常駐プロセスを指定できるのは,SPPとして作成したユーザサーバです。SUPのプロセスは常駐プロセスが一つだけです。
(b) 非常駐プロセス
ユーザサーバを開始したときには,メモリ領域に確保されていないプロセスです。指定した数だけサービス領域がたまってから起動されます。非常駐プロセスを使ったユーザサーバでは,必要なときにだけ起動するので,システムのメモリ領域を効率良く使えます。システムのメモリ領域に空きがない場合に非常駐プロセスを起動させるときは,稼働中の非常駐プロセスが終了してから起動されます。
SPPには,常駐プロセスと非常駐プロセスを幾つずつ使うかを設定します。また,非常駐プロセスを起動する目安となるサービスの滞留数も,ユーザサーバごとに設定します。
非常駐プロセスをいつ起動するかは,サービスの滞留数に指定する値で決まります。(サービスの滞留数に指定した値×起動中のプロセス)の数を超えてサービス要求が滞留したときに,TP1/LiNKは非常駐プロセスを起動します。スケジュールキューに滞留しているサービス要求の数が(サービスの滞留数に指定した値×起動中のプロセス)の数以下になると,TP1/LiNKは非常駐プロセスを終了します。
ユーザサーバで使うプロセスの概要を次の図に示します。
|
(5) スケジュールの優先度
SPPとして作成したユーザサーバには,スケジュールの優先度を付けておきます。優先度が高いユーザサーバの非常駐プロセスは,ほかの非常駐プロセスに比べて優先的にスケジュールされます。
スケジュールの優先度の概要を次の図に示します。
|
(6) ユーザサーバを閉塞する場合
ユーザサーバ(SPP)が異常終了すると,TP1/LiNKはそのユーザサーバのスケジュールをいったん中止して,サービス要求を受け付けないようにします。これをユーザサーバの閉塞といいます。TP1/LiNKは異常終了したユーザサーバを閉塞することで,クライアントからのサービス要求に意図的にエラーを返して,不要な再実行や応答待ちのタイムアウトを防ぐようにしています。
閉塞の対象になるユーザサーバはSPPです。SUPは,閉塞の対象になりません。業務の都合でユーザサーバのスケジュールをいったん中止したい場合は,TP1/LiNKの稼働中にコマンドを実行して意図的にユーザサーバを閉塞することもできます。
異常終了した原因に対処したあとで再びスケジュールを開始するときは,閉塞を解除する操作をします。閉塞を解除されたユーザサーバは,再びサービス要求の受け付けを開始します。
(7) スケジュールサービスのポート番号を指定するとき
通常のリモートプロシジャコールの通信では,TP1/LiNKの環境設定でシステムを構成するノードを指定しておきます。ただし,ネットワーク構成上の都合でTP1/LiNKのシステムを,システムを構成するノードに指定しないときは,このノードの「スケジュールサービスのポート番号」を指定してリモートプロシジャコールを実行できます。スケジュールサービスのポート番号を指定しておくと,クライアントとサーバを直接ポート番号で関連付けられるため,システムを構成するノードに指定するよりも高速に通信できることがあります。
(8) サービス単位のスケジュール制御
SPPのスケジュールキューに対してサービス単位のスケジュール制御ができます。指定できるスケジュール制御を次に示します。
-
サービス単位で同時実行可能なサービス数を指定する。
-
サービス単位でキューイング可能なサービス要求数を指定する。
-
サービス単位でキューイング可能なサービス要求データの格納プール長を指定する。
サービス単位のスケジュール制御を行う場合は,[SPP詳細設定]ダイアログボックスの[サービス関数]タブの[サービス単位にスケジュールサービスの動作を指定]欄にある各項目を指定してください。
サービス単位のスケジュール制御の詳細については,マニュアル「OpenTP1 解説」を参照してください。
(a) サービス単位で同時実行可能なサービス数を指定する
サービス単位で同時実行可能なサービス数を指定できます。
同時実行可能なサービス数が指定値に達した場合,同時実行可能なサービス数に達していないサービスへのサービス要求を,登録順およびスケジュールの優先度に関係なくスケジュールします。
スケジュールキューに登録されているすべてのサービス要求が,同時実行可能なサービス数に達しているサービスへのサービス要求であった場合,実行中のサービス処理が終了するのを待ち合わせます。
(b) サービス単位でキューイング可能なサービス要求数を指定する
サービス単位でスケジュールキューにキューイング可能なサービス要求数を指定できます。
キューイング可能なサービス要求数が指定値に達している場合,スケジュールキューへは登録しないで,ほかのTP1/LiNKノードへの再スケジュールを試みます。
(c) サービス単位でキューイング可能なサービス要求データの格納プール長を指定する
サービス単位でキューイング可能なサービス要求データの格納プール長を指定できます。
該当サービスへのサービス要求データの格納プール長が指定値に達している場合,スケジュールキューへは登録しないで,ほかのTP1/LiNKノードへの再スケジュールを試みます。