7.1.1 QUEUEジョブ,サブミットジョブ実行環境の検討
マネージャー・エージェント構成でQUEUEジョブ,サブミットジョブを実行する場合,実行先となるエージェントホストをマネージャーホストに登録する必要があります。
- 〈この項の構成〉
(1) キュー・エージェント構成の検討
マネージャーホストにエージェントホストを登録すると,エージェントホストと同じ名称の内部的なキュー(デフォルトキュー)が作成されます。
QUEUEジョブ,サブミットジョブを,キュー名またはエージェントホスト名を指定して実行すると,このキューにジョブが登録されます。登録されたジョブは,登録順に並べられ,該当するエージェントホストに配信されます。
キュー・エージェント構成の例を次に示します。
|
マネージャーホストへのエージェントホストの登録は,jpqimportコマンドまたはjpqagtaddコマンドを使用します。コマンドの詳細については,マニュアル「JP1/Automatic Job Management System 3 コマンドリファレンス 4. 特別な運用で使用するコマンド」を参照してください。
また,キューには複数のエージェントを接続できます。キューに複数のエージェントを接続し,ジョブ実行多重度(同時に実行できるジョブ数)やエージェントの優先順位を設定することで,ジョブ実行時の負荷を分散させることができます。
キューに複数のエージェントを接続した負荷分散構成の例を次に示します。
|
ジョブ実行多重度は,jpqagtaltコマンドで変更できます。また,キューへの複数エージェントの接続や優先順位は,jpqagtlinkコマンドで設定できます。各コマンドの詳細については,マニュアル「JP1/Automatic Job Management System 3 コマンドリファレンス 4. 特別な運用で使用するコマンド」を参照してください。
また,ジョブ実行多重度やエージェントの優先順位による負荷分散の考え方については,「(2) 負荷分散の考え方」を参照してください。
(2) 負荷分散の考え方
負荷分散の考え方について説明します。
ここでは,次の内容が設定されている場合を例とします。
-
3台のエージェントホスト(エージェントホストA,エージェントホストB,エージェントホストC)のジョブ実行多重度をそれぞれ「3」とする(同時にジョブを3個まで実行できる)
-
キューqueue1に三つのエージェントを接続させ,負荷分散する構成とする
-
エージェントの優先順位は,エージェントホストAがいちばん高く,エージェントホストBとエージェントホストCが同じとする
-
6個のサブミットジョブを同時に投入したものとする
図7‒3 負荷分散の考え方
サブミットジョブ(job1〜job6)の実行順序は次のようにして決定されます。
-
job1が実行されるエージェントが決定される。
「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
-
エージェントホストA:「0 / 3」
-
エージェントホストB:「0 / 3」
-
エージェントホストC:「0 / 3」
すべてのホストで負荷の割合が同じです。そのため,queue1に定義したエージェントの順序によって,job1はエージェントホストAで実行されます。
-
-
job2が実行されるエージェントが決定される。
「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
-
エージェントホストA:「1 / 3」
-
エージェントホストB:「0 / 3」
-
エージェントホストC:「0 / 3」
負荷が軽いのは,エージェントホストBとエージェントホストCですが,queue1に定義したエージェントの優先順位に従って,job2はエージェントホストAで実行されます。
-
-
job3が実行されるエージェントが決定される。
「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
-
エージェントホストA:「2 / 3」
-
エージェントホストB:「0 / 3」
-
エージェントホストC:「0 / 3」
負荷が軽いのは,エージェントホストBとエージェントホストCですが,queue1に定義したエージェントの優先順位に従って,job3はエージェントホストAで実行されます。
-
-
job4が実行されるエージェントが決定される。
「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
-
エージェントホストA:「3 / 3」
-
エージェントホストB:「0 / 3」
-
エージェントホストC:「0 / 3」
エージェントホストAでは,ジョブ実行多重度が上限に達しています。そのため,queue1に定義したエージェントの順序によって,job4はエージェントホストBで実行されます。
-
-
job5が実行されるエージェントが決定される。
「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
-
エージェントホストA:「3 / 3」
-
エージェントホストB:「1 / 3」
-
エージェントホストC:「0 / 3」
負荷がいちばん軽いホストは,エージェントホストCです。そのため,job5はエージェントホストCで実行されます。
-
-
job6が実行されるエージェントが決定される。
「ジョブ実行数 / ジョブ実行多重度」は次のとおりです。
-
エージェントホストA:「3 / 3」
-
エージェントホストB:「1 / 3」
-
エージェントホストC:「1 / 3」
負荷が軽いホストはエージェントホストBとエージェントホストCで,負荷の割合が同じです。そのため,queue1に定義したエージェントの順序によって,job6はエージェントホストBで実行されます。
-
(3) 同一マシンを複数の実行ホストとして使用する方法
JP1/AJS3で管理するエージェントは,エージェントごとにジョブの実行多重度を設定できます。同一マシン(一つのIPアドレス)に対して複数のエージェントホストをエイリアスとして定義し,特性の異なるジョブを別のエージェントホストに登録することで,一つのマシン上で業務を振り分けることができます。例えば,実ホスト(hostA)に対してhostB,hostCというエイリアスを定義し,一つのマシン上で次の図のように業務を振り分けることができます。
なお,キューレスジョブは,エイリアスのエージェントホスト名を使用できません。
|
このような運用をするには,ジョブ実行制御の構成定義にエイリアスのエージェント名を追加します。その際はhostsファイルでエイリアス名を指定して,エイリアス名でIPアドレスが解決できることを確認してください。エージェント名の追加方法については,次の設定方法の「(b) QUEUEジョブ,サブミットジョブ実行制御の構成定義」を参照してください。
また,JP1/Baseのjp1hosts情報またはjp1hosts2情報で定義すると,hostsファイルなどのOSの設定を変更しないでJP1独自のhosts情報を持つことができます。
(a) jp1hosts情報またはjp1hosts2情報の定義
jp1hosts情報またはjp1hosts2情報の定義方法の詳細については,マニュアル「JP1/Base 運用ガイド」のjp1hosts情報またはjp1hosts2情報の定義に関する説明を参照してください。
- 重要
-
jp1hosts情報またはjp1hosts2情報を設定した場合,jp1hosts情報またはjp1hosts2情報に定義されたホスト名およびIPアドレスに関しては,hostsファイルやDNSの定義を参照しません。したがって,jp1hosts情報またはjp1hosts2情報に設定したIPアドレスに対応する実ホスト名とエイリアス名の両方を,jp1hosts情報またはjp1hosts2情報に定義しておく必要があります。また,実ホスト名はエイリアス名よりも先に定義してください。
(b) QUEUEジョブ,サブミットジョブ実行制御の構成定義
エイリアスエージェントを追加する場合の手順を次に示します。
コマンドの詳細については,マニュアル「JP1/Automatic Job Management System 3 コマンドリファレンス 4. 特別な運用で使用するコマンド」を参照してください。
-
エージェント定義を動的に追加する。
jpqagtaddコマンドを使用してjp1hosts情報またはjp1hosts2情報にエイリアスとして定義したものと同じ名前のエージェントホスト名を-ahオプションに指定し,追加します。また,-cpオプションに実行多重度を設定します。実行多重度は排他実行をしたいジョブの運用方法に合わせて設定します。
例えば,hostAでは通常業務を行い,エイリアス定義したhostBでは一つだけ実行したい業務だけを行う場合,次のように実行多重度を設定します。
jpqagtadd [-mh マネージャーホスト名] -ah hostA -cp 0:00-0:00=5 jpqagtadd [-mh マネージャーホスト名] -ah hostB -cp 0:00-0:00=1
hostAでは常に5個までのジョブが実行されるのに対し,hostBに登録したジョブは常に一つだけ実行されます。
-
キューをオープンする。
エージェント定義追加時はキューの受付口がクローズ状態になっているため,jpqqueopenコマンドを使用してキューの受付口をオープンしてください。
例えば,hostAのキューの受付口をオープンしたい場合は次のコマンドを実行します。
jpqqueopen [-mh マネージャーホスト名] -ah hostA -en
(4) QUEUEジョブ,サブミットジョブ実行環境の検討時の注意事項
QUEUEジョブ,サブミットジョブ実行環境の検討時には,次の内容について注意してください。
(a) ジョブ実行多重度の検討(QUEUEジョブ,サブミットジョブ)
JP1/AJS3では,エージェントホストで同時に実行できるジョブ数の最大値としてジョブ実行多重度を設定できます。ジョブ実行多重度に設定した値以上のジョブをエージェントホストで同時に実行しようとした場合,ジョブは実行待ち状態となります。ジョブ実行多重度を設定することによって,時間帯を分けてジョブ数を制限して負荷を分散させたり,キューに複数のエージェントホストを接続している場合に複数のエージェントに負荷を分散させたりして運用できます。
ジョブ実行多重度はエージェント単位に指定します。キュー単位には指定できません。
■ ジョブ実行多重度設定時の注意事項
デフォルトの設定(終日,ジョブ実行多重度5)で運用する場合,実行時間の短いジョブや同時に実行登録するジョブ数が少ない場合には影響がありませんが,実行時間の長いジョブや,同時に実行登録するジョブ数が多い場合に,実行中のジョブ数がジョブ実行多重度に達しやすく,ジョブ実行多重度に達している時間が長いことによって,後続のジョブの実行に影響を及ぼすおそれがあります。
エージェントホストで実行中のジョブ数がジョブ実行多重度に達している間,後続のジョブはエージェントで実行中のジョブが終了するまでキューイングの状態で待機します。このような場合,予想以上にジョブの実行時間が長く掛かることになるため,ジョブの実行時間,単位時間当たりのジョブ実行数を考慮したジョブ実行多重度を設定するようにしてください。
■ ジョブのキューイング状態が続く場合にジョブ実行多重度に達しているかを確認する
エージェントホストで実行中のジョブ数が,ジョブ実行多重度に達しているために後続のジョブが「キューイング」状態のままとなり,ジョブが実行されるまでに時間が掛かることがあります。実行中のジョブ数がジョブ実行多重度に達しているかを確認するには,jpqagtshowコマンドを実行し,実行中のジョブ数(EXECUTING)と,ジョブ実行多重度(CUREXECHGNUM)を確認してください。jpqagtshowコマンドの詳細については,マニュアル「JP1/Automatic Job Management System 3 コマンドリファレンス 4. 特別な運用で使用するコマンド jpqagtshow」を参照してください。
また,ジョブ実行多重度に達しているためにジョブが実行できない場合,次に示すメッセージを統合トレースログに出力するようにあらかじめ設定しておくことで,ジョブの実行に時間が掛かった要因がジョブ実行多重度到達であるかどうかを確認できます。
KAVU4310-I エージェント(エージェントホスト名)で実行中のジョブ数がジョブ実行多重度(ジョブ実行多重度)に達しています(ホスト名:ホスト名,ジョブ番号:ジョブ番号)
設定方法の詳細については,マニュアル「JP1/Automatic Job Management System 3 構築ガイド 6.2.13 ジョブ実行多重度到達を確認するメッセージを出力する設定」(Windowsの場合)またはマニュアル「JP1/Automatic Job Management System 3 構築ガイド 15.2.13 ジョブ実行多重度到達を確認するメッセージを出力する設定」(UNIXの場合)を参照してください。
(b) サブミットジョブの実行順序に関する注意事項
jpqjobsubコマンドを使用してサブミットジョブを登録した場合は,サブミット順にジョブを実行開始します。ただし,ジョブを配信する際に次の状態にある場合,ジョブの実行順序がサブミット順にならないことがあります。
-
実行先エージェントホストのエージェント使用率が最大値に達している
-
実行先エージェントホストが障害状態,または停止している
-
配信しようとしたジョブと同じ排他実行リソースを指定したジョブが終了する
ジョブまたはジョブネットに対して関連線を設定することで,ジョブの実行順序の入れ替わりを防止できるため,ジョブネットでの運用ができる場合は,関連線を設定することでの対応を検討してください。
ジョブネットで運用できない場合,サブミットジョブの実行順序の入れ替わりを防止する設定を行うと,上記の状態が回復するまで,常に最初に登録したジョブをキューから取り出して配信し,ジョブの実行順序が入れ替わるのを防止できます。
設定方法の詳細については,「7.1.11 サブミットジョブの実行順序の入れ替わりを防止する設定」を参照してください。
また,エージェント使用率とは,エージェントホストのジョブの実行多重度に対する実行中のジョブ数の割合です。エージェント使用率の詳細については,マニュアル「JP1/Automatic Job Management System 3 導入ガイド 11.4.1(6) 実行ホスト(エージェントホスト)へのジョブ実行配信」を参照してください。
- 補足事項
-
jpqjobsubコマンドの-stオプションで,実行開始日時を指定してサブミットしたジョブを配信する際,エージェントホストが使用できないなど,状況によっては実行開始日時を過ぎてもジョブを実行開始できないことがあります。これらのジョブは,ほかの複数のジョブとともにエージェントホストが回復するまでキューイング状態のままです。これらのジョブは,エージェントホストが使用できるようになった時点でキューから配信されますが,実行開始日時順ではなく,サブミットした順に配信されます。
(c) jpqendjobshowコマンドやjpqjobshowコマンドで列挙するジョブ数が多い場合の対処
jpqendjobshowコマンド(終了ジョブの列挙)やjpqjobshowコマンド(キューイング中のジョブの列挙)の実行時に標準出力ファイルに列挙するジョブ数が多い場合,コマンドの実行やその他の要求に時間が掛かったり失敗したりすることがあります。
こうした場合を踏まえ,次のことを検討してください。
- jpqendjobshowコマンドの対処方法
-
-rnオプションで取得するジョブ情報の数を指定するか,または-saオプション,-spオプションで取得するジョブ情報の時間範囲を指定して,一度に取得するデータの量を少なくしてください。
- jpqjobshowコマンドの対処方法
-
-uオプションで取得するジョブの所有ユーザー名を指定するか,または-sオプションで取得するジョブの状態を指定して,一度に取得するデータの量を少なくしてください。この方法で回避できない場合は,通信タイムアウト時間を変更してください。デフォルトは10分間に設定されています。
通信タイムアウト時間の変更手順については,マニュアル「JP1/Automatic Job Management System 3 構築ガイド 6.2.14 ジョブ実行制御のマネージャープロセスに対する通信タイムアウト時間の変更」(Windowsの場合),またはマニュアル「JP1/Automatic Job Management System 3 構築ガイド 15.2.14 ジョブ実行制御のマネージャープロセスに対する通信タイムアウト時間の変更」(UNIXの場合)を参照してください。
また,ジョブ実行マネージャー(jpqman)では,ジョブ情報列挙時に,列挙数に応じてメモリーを消費しているため,列挙数が増加すると統合トレースログにメッセージKAVU4280-Eを出力し,jpqjobshowコマンドまたはjpqendjobshowコマンドが失敗する場合があります。この場合,ジョブ情報列挙時にジョブ実行制御マネージャーのメモリー消費量が少なくなるように設定することで回避できる場合があります。
設定方法の詳細については,「7.1.12 ジョブ情報列挙時にジョブ実行制御マネージャー(jpqman)のメモリー消費量を少なくする設定」を参照してください。