Hitachi

JP1 Version 12 JP1/Automatic Job Management System 3 導入ガイド


5.4.8 実行登録ジョブの状態監視処理

マネージャーホストでは,エージェントホストを監視したり,実行登録したジョブをポーリング監視したりします。JP1/AJS3では,通常,ジョブの状態は実行先のエージェントホストからマネージャーホストに自動的に通知されますが,マネージャーホストと実行先のエージェントホスト間の通信障害や,マネージャーホストのシステムダウンなどが発生した場合,ジョブの状態が正しく通知されないことがあります。このような障害時のリカバリー処理のために監視処理を実行します。

〈この項の構成〉

(1) 実行中のジョブの監視

マネージャーホストは,実行中のジョブを5分間隔でポーリング監視します。ジョブが終了したとき,マネージャーホストはエージェントホストからの終了通知によって,ジョブの状態を終了状態にします。しかし,一時的な通信障害などによって終了通知を受けられなかった場合は,このポーリング監視によってジョブの終了を検知します。また,マネージャーのポーリング監視が通信障害などによって失敗し,実行中のジョブの状態を確認できない状態がおよそ12〜30分(エージェントホストの監視間隔とジョブの実行開始時間のタイミングによって変わります)続く場合,マネージャーホストはその実行中のジョブの状態を変更します。複数のエージェントホストに対してジョブを実行している場合,エージェントホストごとに実行中のジョブの状態を確認します。そのため,障害状態として管理するエージェントホスト数に比例して通信回数が増え,ジョブの異常検知までに時間が掛かります。

統合トレースログに,次のメッセージが出力されている場合,ジョブの状態確認が遅延しているおそれがあります。

KAVU4222-E エージェント(エージェントホスト名)へのジョブ確認要求が失敗しました(要因番号:要因番号

マネージャーホストと管理するエージェントホストの通信回数を確認する場合は,該当する時間帯の統合トレースログに出力されたメッセージKAVU4222-Eの出力数を確認してください。

ジョブネットに定義されているジョブの場合,ジョブを「強制終了」状態に変更し,終了コードに-1を設定します。jpqjobsubコマンドで実行するジョブの場合は,-rsオプションで指定した状態に変更します。詳細については,マニュアル「JP1/Automatic Job Management System 3 コマンドリファレンス 4. 特別な運用で使用するコマンド jpqjobsub」を参照してください。

このとき統合トレースログには次に示すメッセージが表示されます。

KAVU4534-W  エージェント(エージェントホスト名)の応答がないためジョブ(ジョブ番号)を回復状態(状態名)にしました

ここで監視対象となるジョブは,標準ジョブ(ただし,他システムで実行しているQUEUEジョブは対象外),HTTP接続ジョブ,アクションジョブ,およびカスタムジョブです。

(2) 実行ホスト(エージェント)の監視

マネージャーホストは,エージェントホストにジョブを実行登録するときの通信に失敗すると,エージェントホストに障害が発生しているまたは停止していると認識します。障害の状態,または停止の状態を検知すると,そのエージェントホストを5分間隔でポーリング監視し,エージェントホストの運用を確認します。エージェントホストに障害が発生している間または停止している間は,ジョブはキューイング状態でエージェントホストの回復を待ちます。エージェントホストの運用の回復(障害の状態,または停止の状態の回復)を検知すると,エージェントホストにジョブの実行登録を再開します。しかし,エージェントホストへのジョブの実行登録に失敗してから10分以上経過しても実行ホストが回復しない場合は,そのジョブは「起動失敗」状態になります。なお,エージェントホストごとにジョブの状態を確認するため,障害状態として管理するエージェントホスト数に比例して通信回数が増えます。

通信エラーやタイムアウトに掛かる時間は,正常に回復検知したエージェントホストを確認するまでの時間が掛かります。

統合トレースログに,次のメッセージが出力されている場合,エージェントホストの運用状態確認が遅延しているおそれがあります。

KAVU4223-E エージェント(エージェントホスト名)への運用状態確認要求が失敗しました(要因番号:要因番号

マネージャーホストと管理するエージェントホストの通信回数を確認する場合は,該当する時間帯の統合トレースログに出力されたメッセージKAVU4223-Eの出力数を確認してください。

このとき統合トレースログには次のメッセージが表示されます。

KAVU4593-W  実行可能なエージェントがありません

ここで対象となるジョブは,標準ジョブ(ただし,他システムで実行しているQUEUEジョブは対象外),HTTP接続ジョブ,アクションジョブ,およびカスタムジョブです。

注※

実行エージェントグループに複数の実行エージェントホストを接続している場合に,すべての実行エージェントホストで,障害状態または停止状態でジョブを実行できないときは,「起動失敗」状態になります。ただし,接続している実行エージェントホストのうち,どれか一つでも障害状態または停止状態になっていない場合は,異常と検知しないため「起動失敗」状態になりません。例えば,エージェント使用率が100%であるエージェントが含まれる場合が該当します。

(3) 他システムジョブの監視

マネージャーホストは,他システム(JP1/NQSEXECやJP1/OJEなど)に実行登録したジョブを5分間隔でポーリング監視し,ジョブの状態を確認します。およそ一時間以上通信状態が回復しない場合は,次に示すエラーメッセージを統合トレースログに出力してジョブを「異常終了」状態にします。

KAVU6218-W  状態通知プロセスのTCP/IP通信でエラーが発生したためジョブ情報が取得できませんでした。ジョブは正常終了している可能性があります(マネージャー名:マネージャー名,ジョブ番号:ジョブ番号

他システムの中には,ジョブの状態が変化した時点でマネージャーに通知する機能をサポートしていないものもあります。その場合,5分間のポーリング監視だけでジョブの状態を取得するためジョブの状態が変わるのに最大で5分ほど掛かることがあります。ジョブの状態変化を通知する機能のサポートの有無については,他システムのマニュアルを参照してください。

なお,jpqjobsubコマンドを使用して他システムにサブミットジョブを登録した場合は,5分間隔のポーリング監視は行いません。jpqjobgetコマンドを使用して,ジョブの状態を確認してください。

JP1/NQSEXECと連携する場合の注意事項

JP1/NQSEXEC 05-20以前を使用している場合は,JP1/AJS3からJP1/NQSEXECへジョブを実行した際にジョブの終了通知が行われません。この場合,JP1/AJS3はJP1/NQSEXECへ実行要求を行ったジョブに対して5分間隔でポーリング監視を行い,ジョブの状態を確認します。したがって,ジョブが終了してから状態が変わるまでに最大で5分ほど掛かることがあります。後続のジョブがある場合,ジョブの実行監視時間に影響が出るおそれがあるため注意してください。

なお,JP1/NQSEXEC 06-00以降を使用している場合は,JP1/AJS3へジョブの終了通知を行う機能がサポートされているため,JP1/NQSEXECでジョブが終了すると直ちにJP1/AJS3に通知されます。

JP1/NQSEXEC 05-20以前を使用している場合,ジョブの終了検知までに時間が掛かることで運用に多大な影響が出るおそれがあるため,JP1/NQSEXEC 06-00以降へのバージョンアップまたはJP1/AJS3への移行を推奨します。

(4) ジョブの実行ホストの障害検知および障害回復待ち時間

JP1/AJS3では,ジョブ(標準ジョブ,HTTP接続ジョブ,アクションジョブ,およびカスタムジョブ)の実行先となるエージェントホストが障害状態になった場合や通信障害が発生した場合でも,即時に「異常検知」状態にしません。ある程度の待ち時間を設けて通信リトライすることで,エージェントホスト上のシステム障害や通信障害状態が回復するのを待ちます。これによって,一時的な障害による,回復できる業務停止を防止しています。

また,運用によっては障害が発生した場合は回復を待つよりも,直ちに異常を検知して早急なリカバリーを優先させる場合があります。その場合は,TCP/IP通信接続による通信時間または障害回復待ち時間を短縮することによって,早急な障害検知ができます。障害検知までの時間を短縮する場合は,マニュアル「JP1/Automatic Job Management System 3 構築ガイド 6.2.12 エージェントの障害回復待ち時間を短縮する設定方法」(Windowsの場合)またはマニュアル「JP1/Automatic Job Management System 3 構築ガイド 15.2.12 エージェントの障害回復待ち時間を短縮する設定方法」(UNIXの場合)を参照してください。

ジョブの配信時とジョブの実行時では,エージェントホストの障害を検知するまでの時間がそれぞれ異なります。次に説明します。

(a) ジョブ配信時の障害検知および障害回復待ち時間

マネージャーホストからエージェントホストへジョブを配信する際は,TCP/IP通信を使用しています。このため,エージェントホストが起動していない場合やネットワーク障害が発生している場合,TCP/IP通信の接続エラーが発生します。ただし,通常はリトライしているため,エラーとするまでに最大でおよそ5分掛かることがあります。通信接続エラーとなったエージェントホストは障害状態として管理します。それ以降のジョブ配信時はエージェントホストの障害状態が回復していない場合,TCP/IP通信接続はしません。

エージェントホストが障害状態の場合,どのジョブも障害回復待ち時間(デフォルト10分)の間エージェントホストの回復を待ちます。その間,ジョブは「キューイング中」状態(サブミットジョブの場合は「実行待ち」状態)となりますが,障害回復待ち時間を過ぎてもエージェントホストが回復しない場合は,その時点で「起動失敗」になります。したがって,ジョブが実行登録されてから起動失敗になるまでの時間はTCP/IP通信をする場合としない場合とで次の2とおりがあります。

  • エージェントホストの障害を検知していない状態で配信されたジョブ(TCP/IP通信をする)

    TCP/IP通信接続による通信時間(最大でおよそ5分)※1 +

    エージェントホストの障害回復待ち時間(10分) = 最大15分10秒

  • エージェントホストの障害を検知したあとでサブミットされたジョブ(TCP/IP通信をしない)

    エージェントホストの障害回復待ち時間(10分)

    なお,障害検知後に該当する実行エージェントに対して複数のジョブをサブミットするなど,ジョブの実行状況によっては,キューイングの時間が10分以上掛かる場合があります。

    例えば,キューイング中のジョブが三つ存在する場合で,そのうちの一つのジョブが「起動失敗」となるまでに10分掛かっているときは,すべてのジョブが「起動失敗」となるまでに,合計で30分程度掛かることがあります。

(b) ジョブ実行中の障害検知および障害回復待ち時間

マネージャーホストは,エージェントホストからジョブの実行開始通知を受けるとジョブを「実行中」状態に変更し,エージェント監視インターバルのデフォルト300秒(5分)間隔のポーリングで,エージェントホストごとにジョブの状態を確認します。その際,プロセス間で情報を受け渡すためにTCP/IP通信を使用しています。エージェントホストが起動していない場合やネットワーク障害が発生している場合,TCP/IP通信の接続エラーが発生します。ただし,通常はリトライしているため,エラーとするまでに最大で310秒(5分10秒)掛かることがあります。※1

なお,エージェントホストごとにジョブの状態を確認するため,障害状態として管理するエージェントホスト数に比例して通信回数が増えます。

通信接続エラーが発生した際に,エージェントホストの障害回復待ち時間(デフォルト10分)の範囲内であれば,さらにポーリングの状態確認を続行します。エージェントホストの障害回復待ち時間を超えている場合は,その時点で異常検知となり,マネージャーホストはジョブを強制終了状態※2に変更します。そのため,実際にエージェントホストで障害が発生してからジョブが異常を検知するまでに合計時間として,およそ12分から30分ほど掛かります。※3

注※1

TCP/IP通信接続ではデフォルトでリトライしているため,通信接続エラーが起きてから接続タイムアウトとなるまでの時間設定の内訳は次のようになります。

  • 接続タイムアウト

    デフォルト90秒

  • 接続リトライ間隔

    デフォルト20秒

  • 接続リトライ回数

    デフォルト2回

即時に通信接続エラーが発生した場合でも,デフォルト20秒間隔で2回リトライします。そのため,最小でおよそ40秒,最大でおよそ310秒(5分10秒)の通信時間が掛かります。接続タイムアウト,接続リトライ間隔,および接続リトライ回数の設定の詳細については,マニュアル「JP1/Automatic Job Management System 3 構築ガイド 6.2.8 TCP/IP通信接続エラーの接続タイムアウト時間・リトライ間隔・回数の変更」(Windowsの場合)またはマニュアル「JP1/Automatic Job Management System 3 構築ガイド 15.2.8 TCP/IP通信接続エラーの接続タイムアウト時間・リトライ間隔・回数の変更」(UNIXの場合)を参照してください。

注※2

jpqjobsubコマンドで実行するジョブの場合は,-rsオプションで指定した状態に変更します。詳細については,マニュアル「JP1/Automatic Job Management System 3 コマンドリファレンス 4. 特別な運用で使用するコマンド jpqjobsub」を参照してください。

注※3

デフォルト設定の場合,障害検知までの合計時間の内訳は次のようになります。

障害検知までの合計時間 ≒
 (エージェント監視インターバル*2回)
  + (通信時間*3回)
  + 障害発生時間から最初の状態確認までの時間

通信時間は,障害状態として管理するエージェントホスト数に比例して増えます。例えば,10台のエージェントホストで障害状態となっている場合,デフォルトで最大3100秒(およそ50分)掛かることがあります。

また,ポーリング監視で実行中のジョブの状態確認を行う際,1回のポーリング監視で一つのジョブの状態確認を行います。複数のジョブを実行しているエージェントホストで障害が発生した場合,一つ目のジョブが異常検知で強制終了となったあと,次のジョブの状態確認を開始します。それぞれのジョブでポーリングの状態確認を開始してから異常検知するまで同様の検知時間が掛かります。

例えば,実行中のジョブが三つあって,一つのジョブが異常検知となるまでに20分掛かっている場合,すべてのジョブが異常検知して強制終了となるまでに,最低でも60分掛かります。

運用によっては,このような通信障害が発生した際,回復を待つよりも,同じエージェントホストで実行中のジョブをすべて終了状態にすることで,直ちに異常を検知して早急なリカバリーを実施する方が有効な場合もあります。設定の詳細については,マニュアル「JP1/Automatic Job Management System 3 構築ガイド 6.2.20 通信障害時に実行中のジョブをすべて終了状態にする設定方法」(Windowsの場合)またはマニュアル「JP1/Automatic Job Management System 3 構築ガイド 15.2.19 通信障害時に実行中のジョブをすべて終了状態にする設定方法」(UNIXの場合)を参照してください。