Hitachi

OpenTP1 Version 7 OpenTP1 メッセージキューイング機能 TP1/Message Queue 使用の手引


mqaquegrp(キューファイルグループの構成定義)

〈このページの構成〉

形式

{{ mqaquegrp    -g キューファイルグループ名
              〔-b バックアップキューファイル名
                     〔〔,バックアップキューファイル名〕…〕〕
              〔-n 入出力バッファ数〕
              〔-m メッセージエントリ確保率〕
              〔-k キューファイルグループ監視の要否〕
              〔-u キューファイルグループ登録メッセージサイズしきい値〕
              〔-l キューファイルグループ登録メッセージサイズ回復値〕
              〔-s MQAサービス専用共用メモリ確保要求者識別子〕
                キューファイル名〔〔,キューファイル名〕…〕  }}

機能

オンライン中にアクセスしたメッセージを格納するキューファイル名とキューファイルの属性を合わせて,キューファイルグループ名として定義します。

TP1/Message Queue全体で登録できるキューの最大数は20,480個です。

オプション

● -g キューファイルグループ名

 〜<1〜31文字の識別子>

キューファイル名とキューファイルの属性を定義するキューファイルグループの名称を指定します。

アプリケーション,またはチャネルによって,複数のキュー操作が同時に一つのキューファイルグループに集中すると,キュー操作が遅くなる場合があります。同時に使用するキューファイルは,別々のキューファイルグループに分割して定義することを推奨します。

● -b バックアップキューファイル名

 〜<1〜59文字の文字列>

キューファイル二重化構成を行う場合,指定したキューファイル名(A系ファイル名)に対するバックアップキューファイル名(B系ファイル名)を指定します。キューファイル(A系ファイル)とバックアップキューファイル(B系ファイル)は,大きさ(mqainitコマンドのオプション),キュー作成の有無(mqamkqueコマンドのコマンド引数),指定の順序,OpenTP1ファイルシステムのセクタ長を同じにしてください。

指定例を次に示します。

mqaquegrp -g GR1 -b /dev/rdsk/MQA4,/dev/rdsk/MQA5,/dev/rdsk/MQA6
                    /dev/rdsk/MQA1,/dev/rdsk/MQA2,/dev/rdsk/MQA3
  • バックアップファイルとの対応

    /dev/rdsk/MQA1のバックアップキューファイルは,/dev/rdsk/MQA4
    /dev/rdsk/MQA2のバックアップキューファイルは,/dev/rdsk/MQA5
    /dev/rdsk/MQA3のバックアップキューファイルは,/dev/rdsk/MQA6

キューファイル二重化構成でアクセスをしたキューファイル名(A系ファイル名)とバックアップキューファイル名(B系ファイル名)との定義をオンライン終了後に入れ替えて定義しないでください。

  • 1回目のオンライン定義

    mqaquegrp -g GR1
              -b /dev/rdsk/MQA4,/dev/rdsk/MQA5,/dev/rdsk/MQA6
                 /dev/rdsk/MQA1,/dev/rdsk/MQA2,/dev/rdsk/MQA3
  • 2回目のオンライン定義

    mqaquegrp -g GR1
              -b /dev/rdsk/MQA1,/dev/rdsk/MQA2,/dev/rdsk/MQA3
                 /dev/rdsk/MQA4,/dev/rdsk/MQA5,/dev/rdsk/MQA6

上記の指定をした場合,処理は保証できません。

● -n 入出力バッファ数

 〜<符号なし整数>((0〜1048560))《640》

メッセージ本体を格納するキューファイルに対するキャッシュ用の入出力バッファの個数を指定します。キャッシュ用の入出力バッファにはMQAサービス専用の共用メモリ(拡張領域も含みます)が使用されます。

メッセージの読み込み(取り出し,参照および送信)時,対象のメッセージが入出力バッファにある場合,メッセージ本体のディスク入出力が発生しなくなります。

メッセージをキューファイルに蓄積しても,入出力バッファの数に空きがあるまでは,メッセージ読み込み時にメッセージ本体のディスク入出力は発生しません。

1メッセージが入出力バッファに存在するために必要な入出力バッファ数の計算式を次に示します。

↑(メッセージ長+512)/(キューファイルのレコード長−8)↑

(凡例)

↑↑:小数点以下を切り上げます。

注※

キューファイルのレコード長については,mqainitコマンドの-sオプションの説明を参照してください。

一つのキューファイルグループに複数のキューファイルを指定した場合,それぞれのキューファイルにここで指定した数のバッファが割り当てられます。

入出力バッファ数には次に示す計算式以上の値を指定することをお勧めします。

[図データ]

(凡例)
Ai

1トランザクションの登録メッセージ数です。メッセージの読み込みだけを行う場合は1になります。トリガメッセージおよび報告メッセージを生成してキューに登録するメッセージ数もこの値に加算してください。

Bi

受信チャネルのバッチサイズのうちでいちばん大きい値です。トリガメッセージおよび報告メッセージを生成してキューに登録するメッセージ数もこの値に加算してください。ただし,送信チャネルの場合は1になります。

Li

次に示す計算式の算出結果です。ただし,メッセージの読み込みだけを行う場合は1になります。

↑(メッセージ長+512)/(キューファイルのレコード長−8)↑

↑↑は小数点以下を切り上げることを示します。

Mi

次に示す計算式の算出結果です。ただし,送信チャネルだけの場合は1になります。

↑(メッセージ長+512)/(キューファイルのレコード長−8)↑

↑↑は小数点以下を切り上げることを示します。

j

同じキューファイルに割り当てられているキューに同時にアクセスし,かつトランザクションを使用するアプリケーション数です。

トリガメッセージおよび報告メッセージを生成してキューに登録するアプリケーション数およびMQTサーバのプロセス数も計算に含めます。

また,MQCサーバ機能を使用する場合,TP1/Message Queue Accessを使用するアプリケーション数も計算に含めます(MQCサービス定義のmqcgwpnam定義コマンドの指定値が最大値になります)。

k

同じキューファイルに割り当てられているキューに同時にアクセスし,かつトランザクションを使用しないアプリケーション数です。

トリガメッセージおよび報告メッセージを生成してキューに登録するアプリケーション数およびMQTサーバのプロセス数も計算に含めます。

また,MQCサーバ機能を使用する場合,TP1/Message Queue Accessを使用するアプリケーション数も計算に含めます(MQCサービス定義のmqcgwpnam定義コマンドの指定値が最大値になります)。

m

同じキューファイルに割り当てられているキューに同時にアクセスするMQTサーバプロセス数です。

トリガメッセージおよび報告メッセージを生成してキューに登録するアプリケーション数およびMQTサーバのプロセス数も計算に含めます。

入出力バッファ数を上記の計算式より小さく設定した場合,次に示す状況が発生することがあります。

  • 次に示す処理を実行するとき,1秒間の空きバッファ待ちをしたあと,プロセス域にキューファイルのレコード長で入出力バッファを確保

    • MQPUT,MQPUT1またはMQGET命令発行時

    • チャネル経由のメッセージの送信または受信

  • バッファ面数に0を指定した場合は,次の処理を実行するとき空きバッファ待ちをしないで,プロセス域にキューファイルのレコード長で入出力バッファを確保

    • MQPUT,MQPUT1またはMQGET命令発行時

    • チャネル経由のメッセージの送信または受信

どちらの場合もチャネル経由のメッセージ送受信時,またはAPIリターン時に領域は解放されます。

● -m メッセージエントリ確保率

 〜<符号なし整数>((0〜100))《0》

キューファイルに格納できるメッセージ管理情報(MQMD構造体など)の数に対して,何パーセント分のキャッシュエリアが確保されるかを指定します。メッセージエントリ確保率が高いほど,メッセージに対するMQGET命令発行時のディスクに対する入出力回数が少なくなります。メッセージエントリ確保率が低いほど,使用するメモリ量が少なくなります。

一つのキューファイルグループに複数のキューファイルを指定した場合,それぞれのキューファイルにここで指定した数のメッセージエントリが割り当てられます。メッセージエントリ確保率には,キューファイルに格納できるメッセージ数に対する最大保留メッセージ数(メッセージがキューファイルにある数)の割合を%で指定してください。

メッセージエントリ確保率に0を指定した場合,メッセージエントリ(292バイト)×メッセージ数+20バイト分のメモリが,メッセージエントリ確保率に100を指定した時に比べて削減できます。ただし,バッファ長に0バイトを指定して,MQGET命令を発行した場合もキューファイルの入出力が発生します。

● -k キューファイルグループ監視の要否

 〜《N》

キューファイルグループ監視を使用するかどうかを指定します。

  • Y:キューファイルグループ監視を使用します。

    キューファイルグループ監視を使用する場合,-uオプションおよび-lオプションの指定が有効になります。監視サーバプロセスが起動します。

  • N:キューファイルグループ監視を使用しません。

省略する場合,キューファイルグループ監視を使用しません。

キューファイルグループ監視機能を使用する場合,監視されるキューファイルは正常状態のキューファイルだけです。mqarmコマンドを使用して切り離したキューファイル,およびmqaaddコマンドを使用して組み込まれたキューファイルは監視の対象外です。mqarlesコマンドを使用して正常状態になった時点でキューファイルは監視の対象になります。

● -u キューファイルグループ登録メッセージサイズしきい値

 〜<符号なし整数>((10〜100))《80》(単位:%)

キューファイルグループのメッセージ格納域全容量に対するメッセージ格納域登録率のしきい値を指定します。

キューファイルグループの登録率がこのオペランドで指定したしきい値以上になった場合,-kオプションにYが指定されていれば,KFCA31107-Iメッセージが出力されます。

● -l キューファイルグループ登録メッセージサイズ回復値

 〜<符号なし整数>((10〜100))《70》(単位:%)

キューファイルグループのメッセージ格納域全容量に対するメッセージ格納域登録率の回復値を指定します。

キューファイルグループの登録率がこのオペランドで指定した回復値を下回った場合,-kオプションにYが指定されていれば,KFCA31108-Iメッセージが出力されます。

● -s MQAサービス専用共用メモリ確保要求者識別子

 〜<16進数字>((00〜ff))

MQAサービス専用共用メモリ確保要求者識別子を指定します。指定値の先頭に'm'を付加した識別子が,実際にMQAサービス専用共用メモリを確保するときに使用される識別子となります。また,dcshmls -rコマンドで表示される共用メモリプールの確保要求者種別は,指定値の先頭に'm'を付加した値になります。dcshmlsコマンドの詳細については,マニュアル「OpenTP1 運用と操作」を参照してください。識別子を指定したキューファイルグループに属するキューファイルは,MQAサービス専用共用メモリセグメントを識別子単位で確保します。なお,共用メモリの識別子の種類は,31個以内に収まるようにしてください。

このオプションを使用するケースを次に示します。

  1. MQAサービス専用共用メモリへのアタッチは,MQAサービス専用共用メモリ確保要求者識別子単位で実施されます。このオプションを指定すれば,MQAサービスで指定されるキューファイルの一部だけをアクセスするUAPが使用する共用メモリのアタッチサイズを減らすことができます。

  2. MQAサービス専用共用メモリサイズが,トータルで2147483583バイトを超えた場合,-sオプションで分割すれば共用メモリを確保できます。

ほかのmqaquegrp定義コマンドと同一の識別子を指定した場合,同一の識別子を持つキューファイルグループはすべて同一のMQAサービス専用共用メモリセグメントを確保します。

省略した場合,指定を省略した他のmqaquegrp定義コマンドと同一のMQAサービス専用共用メモリセグメントを確保します。この場合のMQAサービス専用共用メモリ確保要求者識別子は,mqaquegrp定義コマンドで指定されている値と重複しない00〜ffの範囲で自動的に付与されます。

この識別子を指定したキューファイルグループのMQAサービス専用共用メモリセグメントの確保で共用メモリのメモリ不足が発生した場合,KFCA31186-Wのメッセージが出力され,共用メモリが分割して確保されます。指定した識別子または自動付与された識別子は,mqafillsコマンドの-fオプションを実行した時に表示される内容で確認することができます。

コマンド引数

● キューファイル名

 〜<1〜59文字の文字列>

メッセージを格納するファイルの名称を指定します。

一つのキューファイルに,複数のキューが格納されます。

キューファイルを複数指定した場合,一つのキューに登録されるメッセージは,複数のキューファイルに分散して格納されます。そのためキューファイルを複数指定する場合は,それぞれのキューファイルを物理的に別ディスクにしてください。一つのキューに複数アプリケーションからの操作が重なった場合,性能が良くなります。

キューファイルパス名およびキューファイル名にスペースを指定しないでください。また,ファイルパス名の"/"個所に"/"を追加したキューファイルパス名を指定しないでください。指定した場合,動作は保証されません。