Comments
Description
Transcript
中身を Message Queueの中身を 見てみましょう!
Message Queueの中身を 中身を 見てみましょう! メッセージキューの管理を疎かにしておくと メッセ ジキュ の管理を疎かにしておくと トラブルはある日突然発生します。 メッセージキューについての説明とトラブル の回避策をご紹介します。 MSGQの種類 メッセージキューには、いくつかの種類があります。 ワークステーション・メッセージキュー ユ ザ プロファイル メッセ ジキ ユーザープロファイル・メッセージキュー QHSTメッセージキュー QSYSOPRメッセージキュー QSYSOPRメッセ ジキュ ジョブメッセージキュー 外部メッセージキュー プログラムメッセージキュー QSYSMSGメッセージキュー ユ ザ 作成メッセ ジキ ユーザー作成メッセージキュー パッケージ・メッセージキュー 知らないところで勝手 に作成されているの で 管理はされない。 トラブルが発生して 初めて存在を知る。 MSGQの使用目的、作成タイミング Q メッセージキュー 使用目的 作成タイミング ワークステーション メッセージキュー ワークステーション・ユーザー相互間、およびワー クステーション・ユーザーとシステム操作員間のメッ セージ送受に使用します。 システムに対してワークステーションが定義され た時点で、システムによりQSYSに作成されます。 ユーザープロファイル メッセージキュー ユーザー相互間の交信に使用されます。 ユーザー・プロファイルを作成した時点で、自動的 にライブラリーQUSRSYS内に作成されます。 QHSTメッセージキュー システム内のジョブからの情報を活動記録ログ (QHST) に送るために使用されます。 に送るために使用されます 出荷時に作成 QSYSOPRメッセージキュー システム、表示装置ユーザー、およびアプリケー ション・プログラムからのメッセージの受取りおよび それに対する応答のために使用されます。 出荷時に作成 ジョブメッセージキュー ジョブ・メッセージ待ち行列は、システム上のジョブ ごとに作成され、そのジョブのすべてのメッセージ 要件を処理します。 ブ ジョブ開始時に作成され、終了時に削除される。 QSYSMSGメッセージキュー 重大なシステムメッセージを処理します。 CRTMSGQでQSYSライブラリーにQSYSMSG メッセージキューを作成 ユーザー作成メッセージキュー メッセージをトリガーとしたアプリケーションを開発 する時に使用する。 CRTMSGQで作成される。 MSGQの削除タイミング メッセージキュー メッセージ削除 ワークステーション メッセージキュー 終結処置で保存日数を過ぎたメッセージを削除し ます。 ユーザープロファイル メッセージキュー 終結処置で保存日数を過ぎたメッセージを削除し ます。 QHSTメッセージキュー ッ ジキ 自動的に削除されます。 QSYSOPRメッセージキュー 終結処置で保存日数を過ぎたメッセージを削除し ます。 IPLした場合は、全メッセージが消去されます。 ジョブメッセージキュー ジョブが終了した時点で削除されます。 QSYSMSGメッセージキュー CLRMSGQ、RMVMSGで削除します。 ユーザー作成メッセージキュー CLRMSGQ、RMVMSGで削除します。 注意事項 サインオンしている場合には削除されません。 他のジョブでQSYSOPRをロックしている場合には 削除はされません。 MSGQがオ MSGQがオーバーフローした場合 フ した場合 MSGQは、最大サイズになると自動拡張されますが最大拡張回数に到達すると 異常終了になります。 異常終了になります ジョブメッセージキューの場合 ユーザープロファイル・メッセージキューの場合 ジョブメッセージキューオーバーフロー対策 常駐型ジョブの場合、無停止状態が長く続くとメッセージが滞留しオーバーフローする危険性が あります。 ★定期的に停止、再起動を行う。 ★満杯時の処置を「*WRAP」にする。(システム値またはジョブ記述で指定) QSYSOPR,ユーザープロファイル,ワークステーション メッセージキューオーバーフロー対策 ジ バ 策 終結処置に適切な保存日数を指定し、自動 削除を実施する。 サインオンしている端末があると削除できな いので注意する いので注意する。 サインオフできない場合は、*WRAPに変更 する。 QSYSOPRは 監視ツールなどを導入して QSYSOPRは、監視ツ ルなどを導入して いる場合はロックされて削除できない。 監視ツールを停止できない場合は、*WRAP に変更する。 ※最近の出荷時の値は、*WRAPになっている。 ユーザープロファイル ザ プ イ メッセージキュー QSYSOPR,ワーク ステーションメッセージキュー メッセージキューの管理 メッセージキュー単位に異常なメッセージが大量にでていないかを ジキ 単位 常な ジが大量 な を 確認しおく。 正常メッセージでも不必要と思われるメッセージが出力されていか を確認する。(Ex.デバッグ用のメッセージ) 不要メッセージキューがないかを確認する。 オーバーフローする危険性がないかを確認する。 メッセージキューの確認 メッセージキューのメッセージ数、サイズなどを確認します。 満杯時の処置 最大増分回数 15622 *NOMAX 15622=*NOMAX サイズ(B) ズ メッセージ数 Q QSYSOPRの最大増分回数は、 488回 増分サイズ(B) 増分回数 メッセージキューの確認 メッセージの内容を確認します。 メッセージの送信 ッ ジ 送信 NEW ユーザープロファイル・メッセージキューに、BREAKモード送信したい場合 メッセージの送信 ッ ジ 送信 NEW ワークステーション・メッセージキューに、BREAKモード送信したい場合 PGM RTVJOBA JOB(&JOB) USER(&USR) CHGMSGQ MSGQ(&JOB) DLVRY(*BREAK) ENDPGM ユ ザ プロフ イルの初期プログラムなどで実行する ユーザープロファイルの初期プログラムなどで実行する。 メッセージの送信 ッ ジ 送信 NEW プリンターセッションでプリンターを使用している場合に、メッセージを送信 するメ するメッセージキューはPC側のセッション・パラメータで指定する必要があ ジキ は 側 シ パ メ タ 指定する必要があ ります。 USER2のメッセージ キューに送信 ワークステーション・メッセージキューの場合は、 QSYS/XXXXXを指定する。 補足:ジョブメッセージキュー ジョブ毎に自動作成されます。 ジ ブ毎 自動作成されます ジョブログで参照することがで きます きます。 ジョブメッセージキューは、 外部メッセージキュー(*EXT) ( ) とプログラムメッセージキュー (各プログラム名)で構成され ています ています。 ジョブメッセ ジキ ジョブメッセージキュー *EXTERNAL PGMA PGMB PGMC 補足:ジョブメッセージキュー ジョブメッセージキューと実行要求元ユーザー間で メッセージの交換ができる。 メッセ ジの交換ができる。 ジョブメッセージキュー プログラム・メッセージの表示 QSYS のサブシステム QINTER のジョブ *EXT へのメッセージ送信 . 対話型ジョブ 対話型ジ バッチジョブ *EXTERNAL 補足:ジョブメッセージキュー ジョブメッセ ジキ ジョブメッセージキュー CALL STACK QCMD INLPGM PGMA PGMB *EXTERNAL QCMD INLPGM PGMA PGMB 補足:メッセージの送信 メッセージ送信 ジ送信 中断メッセージ送信 応答送信 ユーザーメッセージ送信 (CLプログラム内でのみ有効) SNDPGMMSG プログラムメッセージ送信 グラ ッ ジ送信 (CLプログラム内でのみ有効) SNDMSG SNDBRKMSG SNDRPY SNDUSRMSG 補足:SNDPGMMSG TOPGMQ(*PRV) ジョブメッセ ジキ ジョブメッセージキュー CALL STACK *EXTERNAL QCMD QCMD INLPGM INLPGM PGMA PGMB From: PGMB To:( PRV) To:(*PRV) PGMA PGMB 補足:SNDPGMMSG TOPGMQ(*SAME) ジョブメッセ ジキ ジョブメッセージキュー CALL STACK *EXTERNAL QCMD QCMD INLPGM INLPGM PGMA PGMB From: PGMB To:( SAME) To:(*SAME) PGMA PGMB 補足:SNDPGMMSG TOPGMQ(*SAME XXXX) ジョブメッセ ジキ ジョブメッセージキュー CALL STACK *EXTERNAL QCMD QCMD INLPGM INLPGM PGMA PGMB From: PGMB To:(*SAME ( INLPGM)) PGMA PGMB 補足:SNDPGMMSG TOPGMQ(*PRV XXXX) ジョブメッセ ジキ ジョブメッセージキュー CALL STACK *EXTERNAL QCMD QCMD INLPGM INLPGM PGMA PGMB From: PGMB To:(*PRV ( INLPGM)) PGMA PGMB 補足:SNDPGMMSG TOPGMQ(*EXT) プログラム・メッセージの表示 QSYS のサブシステム QINTER のジョブ *EXT へのメッセージ送信 . CALL STACK ジョブメッセ ジキ ジョブメッセージキュー *EXTERNAL QCMD QCMD INLPGM INLPGM PGMA PGMB From: PGMB To:(*EXT) ( ) PGMA PGMB