AS400 / IBM i の運用中に「処理が遅い」「画面が返ってこない」「CPUが高い」「特定ジョブが止まって見える」と言われた時、最初に開くことが多いのが WRKACTJOB です。ただし、WRKACTJOBだけを見てENDJOBすると、原因を失ったり、業務処理を壊したりすることがあります。
この記事では、WRKACTJOBでCPUが高いジョブや応答待ちのジョブを見た時に、DSPJOB、WRKJOB、MSGW、ジョブログ、サブシステム、ジョブキューへ確認を広げる手順を整理します。
WRKACTJOBで最初に見る項目
- CPU率が高いジョブ名、ユーザー、ジョブ番号
- 状態が RUN、TIMW、MSGW、LCKW などになっていないか
- サブシステムとジョブタイプ
- 同じ処理が複数並んでいないか
- 直前に投入されたバッチ、SQL、データ転送、帳票処理
すぐにENDJOBしない
CPUが高いジョブは異常とは限りません。夜間バッチ、集計SQL、帳票作成、バックアップ、再編成処理など、負荷が出る前提の処理もあります。まずDSPJOBやWRKJOBでジョブログ、ライブラリリスト、実行中プログラム、メッセージ待ちを確認します。
ジョブがMSGWの場合は AS400 MSGWの確認ポイント、バッチ投入後の確認は SBMJOB・WRKSBMJOB・DSPJOBDの確認 も合わせて見てください。
CPU高騰時の切り分け
- 単一ジョブだけ高いのか、全体的に高いのか
- 同じユーザー、同じプログラム、同じSQLが繰り返されていないか
- ODBC/JDBCやACSのデータ転送から大量処理が流れていないか
- ロック待ち、メッセージ待ち、ジョブキュー滞留がないか
- 本番処理中なら、停止判断前に業務担当と影響範囲を確認したか
関連コマンドへ広げる
WRKACTJOBで候補を見つけたら、DSPJOBで詳細を確認し、WRKJOBでジョブ操作、WRKOUTQで帳票滞留、WRKJOBQで投入待ちを確認します。コマンドの入口は AS400コマンド逆引き にまとめています。
運用記録に残すこと
- 発生日時、ジョブ名、ユーザー、ジョブ番号
- WRKACTJOBで見た状態とCPU率
- ジョブログの前後メッセージ
- 停止、保留、再投入をした場合の時刻と理由
- 再発時に見る画面と担当者
AS400のジョブ調査は、画面で見えた状態をその場で終わらせず、次に同じことが起きた時に比較できる形で残すことが大切です。
関連: サブシステム停止・開始を伴う作業は、対象業務、JOBQ、WRKACTJOB、QSYSOPR、DSPLOG/QHSTを確認してから進めます。事故を防ぐ確認ポイントは AS400 サブシステム停止・開始の確認ポイント にまとめています。
