16.5 ジョブプロセス実行準備完了通知時のタイムアウト値の設定

キューを使用するジョブ(キューレスジョブを除くPCジョブ,UNIXジョブ,JP1/AJS2上で実行するQUEUEジョブ,アクションジョブ,およびカスタムジョブ)は,ジョブ実行制御のエージェントプロセスからジョブプロセスとして起動されます。その際,エージェントプロセスはパイプ通信を使用してジョブプロセスからの実行準備完了通知を待っています。このときCPUの負荷が高い,ジョブの実行優先度が低いなどの理由でエージェントプロセスへの実行準備完了通知の送信処理が沈み込んでしまうことがあります。エージェントプロセスはジョブプロセスから実行準備完了通知を受けてジョブの状態を実行中にしているため,実行準備完了通知がこないままだと,ジョブの状態はキューイング中のままになってしまうという問題が発生することがあります。ジョブプロセスからの実行準備完了通知の受信にタイムアウト値を設定すると,タイムアウトが発生した場合に次に示すメッセージを統合ログに出力し,早目に異常を検知できるようになります。

KAVU3589-E ジョブ実行処理でパイプタイムアウトエラーが発生しました(タイムアウト値(秒):タイムアウト値

ジョブプロセス実行準備完了通知時のタイムアウト値の設定手順を次に示します。

<この節の構成>
(1) 定義手順
(2) 定義パラメーター一覧
(3) 定義内容

(1) 定義手順

  1. JP1/AJS2のサービスを停止する。
    次のコマンドを実行して,プロセスがすべて停止していることを確認します。

    # /etc/opt/jp1ajs2/jajs_stop
    # /opt/jp1ajs2/bin/jajs_spmd_status

    注※
    自動停止の設定が行われていることを確認してください。
  2. viなどのエディターで,「(2) 定義パラメーター一覧」の定義パラメーターを記述した設定ファイルを作成する。
    設定ファイルのファイル名は任意です。
  3. ファイルを保存し,次のコマンドを実行する。

    jbssetcnf 設定ファイル名

    jbssetcnfコマンドのパスは,「/opt/jp1base/bin/jbssetcnf」です。
    jbssetcnfコマンドの詳細については,マニュアル「JP1/Base 運用ガイド」を参照してください。
  4. JP1/AJS2を再起動する。
    設定ファイルに記述した内容が反映されます。

(2) 定義パラメーター一覧

表16-5 ジョブプロセス実行準備完了通知時のタイムアウト値設定の定義パラメーター

定義キー環境設定パラメーター定義内容
[{JP1_DEFAULT|論理ホスト名}¥JP1NBQAGENT¥Job]"AfterForkPipeTimeout"=ジョブプロセス実行準備完了通知時のタイムアウト値の定義
注※
{JP1_DEFAULT|論理ホスト名}の部分は,物理ホストの場合は「JP1_DEFAULT」を,論理ホストの場合は「論理ホスト名」を指定します。

(3) 定義内容

" AfterForkPipeTimeout "=dword:設定値
ジョブプロセス実行準備完了通知のタイムアウト時間(単位:秒)を16進数で指定します。
指定できる範囲は0x00000384~0x00015180(10進数で900~86,400)です。
最大値の0x00015180(10進数で86,400秒)は1日の秒数です。
デフォルトは「dword:00000384」(10進数で900)です。
注意
ジョブプロセス実行準備完了通知のタイムアウト時間に長い時間を設定すると,ジョブの障害検知が遅くなることがあるため注意してください。
また,ジョブプロセス実行準備完了通知のタイムアウト時間には,最小値として0秒から設定できますが,900秒未満を設定するとタイムアウトエラーが発生しやすくなり,ジョブは起動失敗となります。そのため,指定できる範囲を900秒からとしています。ただし,すでに900秒未満の値を設定して運用している場合はエラーにはならないため,そのまま継続して使用できます。