Interstage Job Workload Server 運用ガイド |
目次
![]() ![]() |
第3章 異常時の対処 | > 3.4 ジョブの異常 |
ジョブが実行中のまま終了しない場合、以下の原因が考えられます。
それぞれについて以下に説明します。
バッチワークユニットの起動状態を確認してください。
バッチワークユニットの状態確認は、以下のislistwuコマンドで行います。
islistwu -a -e |
islistwuコマンドの詳細は、“Interstage Application Server リファレンスマニュアル(コマンド編)”を参照してください。
バッチワークユニットが停止した場合、islistwuコマンドコマンドでは対象のバッチワークユニットの"status"が"stop"(停止状態) と表示されます。
バッチワークユニットが停止していた場合、“イニシエータが稼働状態の場合の対処”に従って対処してください。
対象ジョブの入力ファイルのデータ量の増加が原因で、ジョブの実行時間が増加したことが考えられます。
対象ジョブの入力ファイルのファイルサイズを確認し、業務データがいつもより増加していないか確認してください。
通常時より増加しているようであれば、ジョブが終了するのを待ってください。
入力ファイルのファイルサイズがいつもと変わらないようであれば、“ファイルの排他待ちになっている場合”の確認を行ってしてください。
また、バッチ業務として次回運用時に同様の現象が発生しないように以下の対処を行ってください。
対象ジョブのファイルの排他情報の表示を、btfwexcinfoコマンドで行い対象ジョブが使用するファイルが、他のジョブとの間で排他関係にあり、排他待ち状態にないか確認してください。
ファイルの排他状況を表示するbtfwexcinfoコマンドの形式を以下に示します。
btfwexcinfo -j ジョブ名 |
btfwexcinfoコマンドについては、“Interstage Job Workload Server リファレンス”を参照してください。
ファイルの排他状況の出力例を以下に示します。
例でのパス名などは、SolarisおよびLinuxの形式で記載しています。
以下の例は、ジョブ名が job003 のファイルの排他状況を表示したものです。
Date Time Elapsed JobState Job -------------------------------------------------------------------------------- 2006/03/17 12:58:26 00:00:02 wait job003(00003) Elapsed FileState FileName -------------------------------------------------------------------------------- 00:00:02 wait (exc) /home/mcuser/file001 OwnerJob ---------------------------------------------------------------------- job001(00001) job002(00002) Date Time Elapsed JobState Job -------------------------------------------------------------------------------- 2006/03/17 12:58:25 00:00:02 exec job001(00001) Elapsed FileState FileName -------------------------------------------------------------------------------- 00:00:02 owner(shr) /home/mcuser/file001 Date Time Elapsed JobState Job -------------------------------------------------------------------------------- 2006/03/17 12:58:25 00:00:02 exec job002(00002) Elapsed FileState FileName -------------------------------------------------------------------------------- 00:00:02 owner(shr) /home/mcuser/file001 |
ファイルの排他状況の対象ジョブの"JobState"が"wait"になっていた場合には、ファイルの排他待ちとなっています。
上記例では、job003 の"JobState"が"wait"になっているため、ファイルの排他待ちになっていることがわかります。
排他待ち状態の場合には、排他待ちになっているファイル、およびそのファイルを排他獲得しているジョブを確認してください。
上記例では、job003が排他しようとしたファイル"/home/mcuser/file001"が、すでにjob001、job002によって排他獲得されていることがわかります。
この場合の対処としては、排他関係にあるジョブ(上記例ではjob001、job002を指します)が終了するまで待ってください。
また、排他待ち状態になっているジョブより、後続ジョブを優先して実行したい場合には、排他待ち状態になっているジョブをキャンセルしてください。
ジョブのキャンセルは、“ジョブのキャンセル”を参照してください。
キャンセルしたジョブは、排他関係にあったジョブが終了したことを確認後、再度投入してください。
また、次回運用時に同様の現象が発生しないように、排他関係にあるジョブとバッチ業務の関係を確認して、以下の対処を検討してください。
排他待ち状態以外の場合には、システム負荷が原因として考えられますので、“システム負荷が上がっている場合”を参照して対処してください。
システム負荷が上がって、対象ジョブに十分なCPUやメモリが割り当てられていないか確認します。
システム負荷として、システムのCPU使用率や、メモリ使用量を確認するには、sarコマンドやtopコマンド(Windows(R)の場合はタスク マネージャ)などで行います。
システム負荷が上がっていた場合には、原因を調査して対処を行ってください。
システム負荷が上がっていない場合には、バッチアプリケーションが無限ループ状態になっていることが考えられますので、“バッチアプリケーションが無応答になった場合”を参照して対処してください。
ジョブ情報の表示コマンド(btfwjobinfoコマンド)で、対象ジョブのジョブ詳細表示をします。
詳細表示には、実行中のジョブステップ名と、そのジョブステップを実行しているプロセスIDが表示されます。
btfwjobinfoコマンドについては、“Interstage Job Workload Server リファレンス”を参照してください。
実行中のジョブステップで実行しているバッチアプリケーションが、無応答になっているか、または無限ループしているかを確認するためには以下の3つの方法があります。
無限ループしている場合または、無応答になっている場合は、ジョブをキャンセルしてください。
ジョブのキャンセルは、“ジョブのキャンセル”を参照してください。
無限ループしているか無応答になっているかの判断ができない場合には、ジョブが終了するのを待ってください。
ジョブの実行時間が、ジョブの実行経過時間制限値を超えると、ジョブは以下の終了コードで異常終了します。
ジョブ終了コード |
意味 |
0x60000601 |
ジョブの実行経過時間制限値を超えたことによるジョブの実行中断 |
ジョブの実行経過時間制限値の設定がされていない場合は、btfwjobinfoコマンドでジョブの詳細情報を表示し、対象ジョブの実行開始日時(Start Time)をもとに、想定していた時間を大幅に超えていることを確認後、ジョブをキャンセルしてください。
ジョブの実行経過時間制限値を超えた場合や、キャンセルした場合には、必ずジョブログを確認し原因を究明して対処してください。
バッチアプリケーション内で通信処理を行っているなど、外部要因により待ち状態が発生してジョブが終了しない、もしくは実行時間が大幅に遅くなる可能性があるジョブは、ジョブが一定時間内に終了してから、調査・対処が速やかに行えるように、ジョブ投入時に実行経過時間制限値を指定するようにしてください。
バッチワークユニットがプロセス縮退運用する設定の場合は、バッチワークユニットが縮退運用中になったことが考えられます。
システムログ(Windows(R)の場合はイベントログ)に以下のメッセージが出力されているか確認してください。
上記メッセージが出力されている場合、バッチワークユニットが縮退運用中です。
この場合、以下の手順での対処が必要です。
縮退運用中のバッチワークユニットのジョブの多重度の復元方法を以下に説明します。
バッチワークユニットが縮退運用中状態の場合、islistwuコマンドでは対象のバッチワークユニットの"status"が"degenerate"(縮退運用中状態) 表示されます。
縮退運用中状態のバッチワークユニットは、isrecoverwuコマンドにより復元することができます。(ジョブの多重度が元にもどります。)
isrecoverwuコマンドの形式を以下に示します。
isrecoverwu ワークユニット名
ワークユニット名は、“ジョブキュー名_CWU”です。
ジョブキュー名は、縮退運用中になったジョブの実行環境のジョブキュー名です。
isrecoverwuコマンドの詳細は、“Interstage Application Server リファレンスマニュアル (コマンド編)”を参照してください。
縮退運用中のバッチワークユニットのジョブをキャンセルした場合、ジョブの多重度の復元が実施されていないため、ジョブは実行中のままとなります。この状態では、ジョブ情報の表示コマンド(btfwjobinfoコマンド)が実行中のジョブを表示できない場合があります。
カスケードジョブで終了遅延が発生した場合、以下の原因が考えられます。
以下のコマンドで状態を確認します。
btfwjobinfo -l ジョブ番号 |
上記コマンドの出力でカスケードジョブステップの“Process ID”が“-”になっている場合、そのカスケードジョブステップが復帰しています。
カスケードジョブステップの場合、データの引き継ぎは名前付きパイプで行いますので、ファイル(名前付きパイプ)をオープンおよびクローズせずに復帰すると、先行ステップのアプリケーションの書込み、および後続ステップのアプリケーションの読込みが復帰しなくなります。
該当ジョブのキャンセルを行い、アプリケーションでエラー検出時などクローズせずに復帰していないかを確認してください。
また、アプリケーションでは、ファイル(名前付きパイプ)は必ずオープンし、クローズしてから復帰するようにしてください。
btfwjobinfoコマンドについては、“Interstage Job Workload Server リファレンス”を参照してください。
目次
![]() ![]() |