JP1/Automatic Job Management System 3 導入ガイド
ジョブを実行する際に,キューを経由しないでジョブを直接エージェントに送って実行できます。キューを使わないで実行するジョブをキューレスジョブといいます。キューレスジョブは,同時に実行するジョブ数の制御をエージェント(キューレスエージェント)側でするため,エージェントホストのリソース制御は容易ですが,マネージャー側では制御できません。マネージャー側では,ジョブネットの実行順序やスケジュールの調整によるジョブ実行数の流量調整ができます。
キューレスジョブとして実行できるジョブは,ジョブネットに定義したPCジョブ,UNIXジョブ,およびアクションジョブです。これ以外のジョブは,キューレスジョブとして実行できません。また,キューレスジョブでは,JP1/NQSEXECやJP1/OJEと連携したジョブを実行できません。
PCジョブ,UNIXジョブ,またはアクションジョブをキューレスジョブとして定義するには,ジョブの詳細定義の[実行先サービス]にJP1/AJS3キューレスエージェントサービス([キューレス])を選択します。
また,キューレスジョブは実行エージェントを使用しないため,ジョブの詳細定義の[実行エージェント]には実行ホスト名を指定してください。[実行エージェント]に指定する実行ホスト名を実行エージェントプロファイルに設定しておくと,キューレスジョブの場合も実行エージェント制限を使用することができます。実行エージェント制限の詳細については,マニュアル「JP1/Automatic Job Management System 3 設計ガイド(システム構築編) 2.5.1(6) 実行エージェント制限について」を参照してください。
キューレスジョブを使用する場合は,マネージャー・エージェントの両ホストで,あらかじめセットアップをしておく必要があります。キューレス環境のセットアップについては,マニュアル「JP1/Automatic Job Management System 3 構築ガイド2 2.7 キューレスジョブ実行環境設定」を参照してください。
- <この節の構成>
- (1) キューレスジョブの実行環境
- (2) キューレスジョブの状態
- (3) 最大同時ジョブ実行数
(1) キューレスジョブの実行環境
キューレスジョブの場合,エージェントのJP1/AJS3キューレスエージェントサービスが,同時に実行するジョブ数などを管理します。そのため,キューレスジョブを実行する場合は,エージェントホストでJP1/AJS3キューレスエージェントサービスを起動しておく必要があります。
キューレスジョブの実行処理の流れを,次の図に示します。
図10-26 キューレスジョブの実行処理の流れ
キューレスジョブの場合,ジョブネットのジョブは,キューには登録されないで,スケジューラーから直接エージェント(キューレスエージェント)に送られます。このため,スケジューラーサービスを多重化した構成では,ジョブ実行性能の面で特に効果があります。
キューレスジョブを実行する場合,ジョブの実行を依頼するJP1ユーザー名とマネージャーのホスト名を,エージェントホストのOSユーザーにマッピングしておく必要があります。また,ジョブを実行するOSユーザーを指定してジョブを実行する場合は,そのOSユーザーをJP1ユーザーとマッピングしておく必要があります。
キューレスジョブの実行中は,回線の接続と切断の回数を減らすために,マネージャー・エージェント間の通信回線を接続状態のままにしています。キューを使用したジョブの場合は,定期的にポーリングすることでジョブの状態を確認しますが,キューレスジョブの場合は,ポーリングしません。キューレスジョブの異常の検知は,ジョブ実行中の回線切断を検知することで行います。
(2) キューレスジョブの状態
キューレスジョブはキューを使わないため,ジョブ実行の際にジョブをキューに登録する「キューイング」という状態がありません。キューを使うジョブの状態は,「実行待ち」→「キューイング」→「実行中」(または「起動失敗」)と遷移しますが,キューレスジョブは,「実行待ち」→「実行中」(または「起動失敗」)と遷移します。
(3) 最大同時ジョブ実行数
キューレスエージェントサービス内の最大同時ジョブ実行数の設定によって,そのホストで同時に実行できるジョブ数を制限できます。また,キューレスエージェントサービスにクラスを定義し,クラスごとに最大同時ジョブ実行数を設定することで,運用に合わせた負荷分散ができます。
最大同時ジョブ実行数を超えたジョブは,キューレスエージェントサービスまたはクラスごとに設定した最大待ちジョブ数まで実行待ちの状態でキューレスエージェントサービスのメモリー内で管理されます。最大待ちジョブ数を超えたジョブは,「起動失敗」状態になります。
(a) キューレスジョブの最大同時ジョブ実行数の設定方法
キューレスエージェントサービスの最大同時ジョブ実行数および最大待ちジョブ数は,環境設定パラメーターAJSQL_JOBMAXおよびAJSQL_JOBWAITMAXで設定できます。環境設定パラメーターAJSQL_JOBMAXおよびAJSQL_JOBWAITMAXは,jbssetcnfコマンドで設定できます。環境設定パラメーターの詳細については,マニュアル「JP1/Automatic Job Management System 3 構築ガイド2 2.7 キューレスジョブ実行環境設定」を参照してください。
ajsqlalterコマンドを使用すると,キューレスエージェントサービス運用中に最大同時ジョブ実行数および最大待ちジョブ数を変更できます。最大同時ジョブ実行数が0の場合,ジョブは実行されないで最大待ちジョブ数を超えるまで実行待ち状態としてキューレスエージェントサービス上のメモリーで管理されます。運用に合わせて最大同時ジョブ実行数,最大待ちジョブ数を変更してください。ajsqlalterコマンドの詳細については,マニュアル「JP1/Automatic Job Management System 3 コマンドリファレンス2 3. 特別な運用で使用するコマンド ajsqlalter」を参照してください。
(b) クラスごとの最大同時ジョブ実行数を使用したキューレスジョブの負荷分散
キューレスジョブを登録する際に,あらかじめ最大同時ジョブ実行数を設定したクラスを定義することによって,ジョブの排他実行や優先的に特定のジョブを実行する時間帯を制限するなど,運用に合わせた負荷分散ができます。
クラスごとの最大同時ジョブ実行数および最大待ちジョブ数を設定する場合は,マニュアル「JP1/Automatic Job Management System 3 構築ガイド1 6.4.1 キューレスジョブ環境でクラスを指定したジョブを実行するための設定」(Windowsの場合)またはマニュアル「JP1/Automatic Job Management System 3 構築ガイド1 15.4.1 キューレスジョブ環境でクラスを指定したジョブを実行するための設定」(UNIXの場合)を参照してください。
例えば,排他資源を使用するために,あるジョブを単独で実行させたい場合は,最大同時ジョブ実行数に1を設定したクラスを定義し,そのクラスにジョブを登録することで,常に単独でジョブを実行できます。また,ある時間帯だけ優先して実行させたいジョブを登録するクラスの最大同時ジョブ実行数を増やし,ほかのクラスの最大同時ジョブ実行数を減らせば,特定のジョブだけを優先的に実行させることができます。
(c) キューレスエージェントサービス全体とクラスごとの最大同時ジョブ実行数の関係
キューレスエージェントサービス全体の最大同時ジョブ実行数を超える場合は,キューレスジョブを登録したクラスの最大同時ジョブ実行数に満たなくても,そのジョブは実行待ちの状態になります。また,キューレスエージェント全体の最大待ちジョブ数を超える場合は,クラスの最大待ちジョブ数に満たなくても,そのジョブは「起動失敗」状態になります。
Copyright (C) 2009, 2014, Hitachi, Ltd.
Copyright (C) 2009, 2014, Hitachi Solutions, Ltd.