English

実践習得 IBM MQの基本

パフォーマンス測定(2)個別テスト

※本連載は最新のmqpgf/mqpcfに基づいて改定されることがあります。 常に最新バージョンをダウンロードしてご使用ください。

提供するスクリプトを使用すると、各ワークロード(テストケース)のリストを作成して連続実行することも可能ですが、この章では、単独で実行する方法をご説明します。 単独少量のデータで動作を検証後、テストリストを使用して様々なテストケースの連続実行やスケジュール実行を実施されることをお勧めします。


各個別テスト・スクリプトに共通の事項

まず、各個別テスト・スクリプトに共通の事項についてご説明します。 各テスト・スクリプトを引数なしで実行すると、パラメータの指定方法と使用される環境変数が表示されます。 下記はRR-1のテスト・スクリプトをWindowsで実行した例ですが、Linux/HPE NonStopでも同じです。

Cmd> PowerShell -File RR_1_s.ps1 または PS> ./RR_1_s Usage: RR_1_s.ps1 <Qmgr> <Connections> <Messages> <Bytes> <Log Directory> <Workload> <MQ Constant> <Data File> RR-1 MQI Local Bindings Parameters: $1 : Queue manager name $2 : Number of connections $3 : Number of messages $4 : Message Bytes $5 : Log Directory $6 : Workload $7 : MQ Constant (ex. MQPER_PERSISTENT, MQPER_NOT_PERSISTENT) $8 : Data File (Input message file) (Option) If not specified, "<workload name>" is used as the message. Environments(./runpfmts.bat): $INCL_CON_TIME : Include MQCONN/MQDISC time in measurement, 0:not include, 1:include $RCV_BUFF_SIZE : Receive buffer size $CON_RETRY : The number of connection retry $CON_INTERVAL : Connection retry interval $RR1_RequestQ : Request queue name $RR1_ReplyQ : Reply queue name >


スクリプト・パラメーター

各個別テスト・スクリプト RR_n_*.ps1(.sh) のパラメータは全て共通です。 設定するパラメーターは下記の通りです。

引数 設定内容 説明
$1 ターゲット・キューマネージャー名 接続するキューマネージャー名
$2 接続数 スレッドの場合はスレッド数
プロセスの場合は起動プロセス数
RR-1は起動プロセスは2倍(RequesterとResponder)
$3 メッセージ数 ※実際に送受信されるメッセージ数=$2*$3
$4 メッセージのバイト数 指定メッセージ<$4:後続はNULLで埋められる
指定メッセージ>$4:以降は切り捨て
$5 ログディレクトリ名 ログファイルの格納ディレクトリ
$6 ワークロード名 データファイル指定なしの場合$6をメッセージとして使用
$7 MQコンスタント mqpgf(c)に指定するMQコンスタント
例:MQPER_PERSISTENT, MQPER_NOT_PERSISTENT
$8 データファイル ※mqpgf(c)の通常版は指定不可


環境変数

環境変数も使用します。 各テストに共通なものは下記です。 これらの値はWindowsの場合は./runpfmts.bat、Linux, HPE NpnStopの場合は./runpfmts.iniに設定します。 スクリプト内でこれらのファイルを直接読み込みますので、runpfmts.batを実行したり、runpfmts.iniを事前に環境に読み込んでおく必要はありません。

変数名 設定内容 説明
INCL_CON_TIME MQCONN/MQDISCの時間を含めるかどうか 計測時間に0:含めない 1:含める
RCV_BUFF_SIZE 受信バッファサイズ 受信可能なメッセージサイズ
CON_RETRY 接続リトライ件数 接続失敗時の再試行回数
CON_INTERVAL 接続リトライ・インターバル ms単位で指定

< INCL_CON_TIME >

計測時間にMQCONN/MQDISCを含める場合は、INCL_CON_TIMEを'1'に設定します。 アプリケーションが接続したままの状態を継続して維持する場合など、MQCONN/MQDISCにかかる時間が無視できる場合は'0'を設定します。 一般にメッセージの送受信の度にMQCONN/MQDISCを繰り返すアプリケーションを想定する場合に、多数の行を含むテスト・リストを作成する場合があります。 その場合はINCL_CON_TIMEを'1'に設定してMQCONN/MQDISCの影響も測定時間に含めます。
※リクエスター側でかつプロセス毎に接続するスクリプトでは、プロセス起動時間の影響によるプロセス毎の処理の開始時間のばらつきを回避する為に、"syncfile"というファイルを作成することによって、MQCONN/MQOPEN後に同期をとって処理を開始します。 INCL_CON_TIMEが'1'の場合は、この同期処理は行いません。

< RCV_BUFF_SIZE >

(重要)RCV_BUFF_SIZEには全テストで使用する受信メッセージの内、最大のメッセージ以上の値を設定します。 この値にはMQMDのサイズは含まれません。 もし、この設定値より大きなサイズのメッセージを受信した場合、受信メッセージはRCV_BUFF_SIZEのサイズでトランケートされます。 トランケートされる場合、一般に通常よりも高パフォーマンスとなり、正しい測定結果を得られません。 必ず受信するメッセージよりも大きな値を設定する様に注意してください。

< CON_RETRY, CON_INTERVAL >

CON_RETRY、CON_INTERVALは、環境に問題が発生して接続が失敗する場合に接続を再試行する為のパラメータです。 実行に数時間を要する大きなテストリストをスケジュール実行する場合などに、後続のテストが全て無効にならない様にするための考慮です。


個別テストスクリプトの実行方法

各個別テストスクリプトの実行方法の実行方法は全て共通です。 下記はRR_1(接続毎にプロセスを起動)の例です。

Windowsの場合: Cmd> PowerShell -File ./RR_1_s.ps1 <Qmgr> <Connections> <Messages> <Bytes> <Log Directory> <Workload> <MQ Constant> <Data File> または PS> ./RR_1_s <Qmgr> <Connections> <Messages> <Bytes> <Log Directory> <Workload> <MQ Constant> <Data File> Linux/HPE NonStopの場合: $ ./RR_1_s.sh <Qmgr> <Connections> <Messages> <Bytes> <Log Directory> <Workload> <MQ Constant> <Data File>

RR_1はソースサーバー上で実行される個別テスト・スクリプトでリクエスターとリスポンダーの両方のプロセスが起動されます。 他のスクリプトは、リクエスターとリスポンダーを別々のマシン上で起動する必要があります。 その際、必ずリスポンダーを先に起動するようにしてください(重要)。 パフォーマンスの測定結果はリクエスターとリスポンダー側の両方に表示されますが、基本的にリクエスター側を参照します。 リスポンダーをリクエスターよりも後に起動すると、リクエスターは最初のメッセージの応答をリスポンダーが起動するまで待機することになり、測定結果にマイナスの影響を与えてしまいます。 起動順については十分に注意してください。


出力ログ

引数で指定したログディレクトリ下の console.log に画面に表示されたテスト結果と同じ内容が書き込まれます。 これはテストを実施する度にアペンドされます。 下記はWindowsの例ですが、Linux, HPE NonStopでも同様です。

>type <log directory>/console.log Start Time: 2022/04/21 15:36:06.838 Stop Time: 2022/04/21 15:36:06.869 Elapsed Time: 00:00:00.0310000 Total Number of messages: 10 Round Trips/sec: 322.58064516129 >

表示されている各項目の意味は下記です。

Start Time テスト開始時間
Stop Time テスト終了時間
Elapsed Time 経過時間(Stop Time-Start Time)
Total Number of messages 送受信メッセージ件数(接続数*メッセージ数)
Round Trips/sec 毎秒の送受信件数(テスト結果)

※テスト時間が極端に短い場合、特にStart TimeとStop Timeが同じ場合は結果を計算できず、下記の様にRound Trips/secに"Infinity"(Windowsの場合)が表示されます。 その場合は、<Connections> <Messages> <Bytes>により大きい値を指定してください。

Start Time: 2022/05/24 14:52:42.354 Stop Time: 2022/05/24 14:52:42.354 Elapsed Time: 00:00:00 Total Number of messages: 10 Round Trips/sec: Infinity

これらの計算の元になっているログを格納する下記ネーミングのディレクトリも作成されます。

<ワークロード>_<メッセージサイズ>_<接続数>_<キューマネージャー>_YYYYMMDD_hhmmss

格納されるログファイルはmqpgf(c)からの出力で、プロセス毎(スレッド毎ではない)に作成されます。 Windowsの場合の標準出力(stdio)、Linux, HPE NonStopの場合の標準出力(stdio)と標準エラー出力(stderr)は、下記ネーミングのログに出力されます。

<要求/応答区分(req/rep)>_<起動プロセス番号>_YYYYMMDD_hhmmss
※<起動プロセス番号>はプロセスの場合のみ付加されます。 スレッドの場合は同じプロセスのログに全てのスレッドのログが出力されます。

Winodowsの場合は、標準エラー出力(stderr)は下記ネーミングで別ログファイルに出力されます。

stderr_<要求/応答区分(req/rep)>_<起動プロセス番号>_YYYYMMDD_hhmmss
※<起動プロセス番号>はプロセスの場合のみ付加されます。 スレッドの場合は同じプロセスのログに全てのスレッドのログが出力されます。

※下記はRR-1(プロセス)の実行ログをWindowsで表示させた例です。 logs>dir /S ... 2022/04/24 10:48 <DIR> . 2022/04/24 10:48 <DIR> .. 2022/04/24 10:48 346 console.log 2022/04/24 10:47 <DIR> RR-1_102400_100_PLQMS_20220427_104717 ... 2022/04/24 10:47 <DIR> . 2022/04/24 10:47 <DIR> .. 2022/04/24 10:48 39,411 rep_1_20220427_104717.log 2022/04/24 10:48 39,411 rep_2_20220427_104718.log 2022/04/24 10:48 39,411 rep_3_20220427_104718.log 2022/04/24 10:48 39,411 rep_4_20220427_104718.log 2022/04/24 10:48 39,411 rep_5_20220427_104718.log ... 2022/04/24 10:48 6,200 stderr_rep_1_20220427_104717.log 2022/04/24 10:48 6,200 stderr_rep_2_20220427_104718.log 2022/04/24 10:48 6,200 stderr_rep_3_20220427_104718.log 2022/04/24 10:48 6,200 stderr_rep_4_20220427_104718.log 2022/04/24 10:48 6,200 stderr_rep_5_20220427_104718.log ... logs>

ここでは出力内容の詳細の説明は割愛しますが、実行に問題が発生した場合などに参照してください。


テスト前の確認

テスト前に使用するキューが空になっていることを必ず確認してください。 これは全テストケースに共通の注意事項です。 テスト開始時に使用するキューが空になっていないと、多くの場合テストが失敗します。
サーバー間の接続を使用するテストでは当然チャネルの状態も正常である必要があります。 チャネルの確認と開始は、前章の「チャネルの開始」を参照して実施してください。

関連するキューを確認操作するスクリプトも提供されています。 このスクリプトはカレントディレクトリの<QMGR>.mqscを参照してパフォーマンステストに関連するキューのみを表示します。

※ckchl.ps1(.sh), stachl.ps1(.sh), ckque.ps1(.sh), clrque.ps1(.sh), dltmsg.ps1(.sh)は<QMGR>.mqscを参照します。 同様にクライアント用のckque_c.ps1(.sh), clrque_c.ps1(.sh), dltmsg_c.ps1(.sh)も接続先の<QMGR>.mqscを参照します。 その為、クライアントのディレクトリには接続先ソースQMGRの<QMGR>.mqscをコピーして配置しておくことが必要です。 <QMGR>.mqscを参照する理由は処理の対象をパフォーマンス・テスト用のオブジェクトに限定する為です。

Windowsの場合: Cmd> PowerShell -File ./ckque.ps1 -m <QMGR> または PS> ./ckque -m <QMGR> Cmd> PowerShell -File ./ckque_c.ps1 -m <QMGR> ※クライアント接続の場合 または PS> ./ckque_c -m <QMGR> ※クライアント接続の場合 Linux/HPE NonStopの場合: $ ./ckque.sh <QMGR> $ ./ckque_c.sh <QMGR> ※クライアント接続の場合

*オプションの説明
-mまたは第一引数: キューマネージャー名

下記は、Windowsサーバーで実行した例ですが、Linux/HPE NonStop、クライアント接続の場合でも同様です。

Cmd> PowerShell -File ./ckque.ps1 -m PLQMS または PS> ./ckque -m PLQMS ... 1: QUEUE(REQ1) TYPE(QUEUE) CURDEPTH(3) IPPROCS(0) OPPROCS(0) 1: QUEUE(REP1) TYPE(QUEUE) CURDEPTH(0) IPPROCS(0) OPPROCS(0) ... >

この例では、REQ1にメッセージが残っているので、消去します。

Windowsの場合: Cmd> PowerShell -File ./clrque.ps1 -m <QMGR> または PS> ./clrque -m <QMGR> Linux/HPE NonStopの場合: $ ./clrque.sh <QMGR>

*オプションの説明
-mまたは第一引数: キューマネージャー名

Cmd> PowerShell -File ./clrque.ps1 -m PLQMS または PS> ./clrque -m PLQMS ... Clear Queue Success. Queue Name : REQ1 Clear Queue Success. Queue Name : REP1 ... >

クリアするキューが伝送キューであった場合などは、理由コード 4004 MQRCCF_OBJECT_OPEN でキューのクリアに失敗することがあります。 下記は、Linuxで実行した例ですが、Windows/HPE NonStopの場合でも同様です。 mqpcfはエラー発生時、通常2行のエラーを表示しますが、その1行目の最後尾のmqCommandRCを確認します。

$ ./clrque.sh PLQMS mqpcf clr -qm PLQMS -q PLQMR MQExecute : Command Server Error. ..., mqCommandCC=[2], mqCommandRC=[4004] MQExecute : Command Server Error. ..., mqCommandCC=[2], mqCommandRC=[3008] mqpcf clr -qm PLQMS -q PLQMR2 MQExecute : Command Server Error. ..., mqCommandCC=[2], mqCommandRC=[4004] MQExecute : Command Server Error. ..., mqCommandCC=[2], mqCommandRC=[3008] ... >

その場合は、MQGETでメッセージを全て読み込む方法で消去します。

Windowsの場合: Cmd> PowerShell -File ./dltmsg.ps1 -m <QMGR> または PS> ./dltmsg.ps1 -m <QMGR> Linux/HPE NonStopの場合: $ ./dltmsg.sh <QMGR>

*オプションの説明
-mまたは第一引数: キューマネージャー名

下記は、Windowsで実行した例です。 mqpgfを-rオプションによってキューが空になるまで、すなわち理由コード 2033 MQRC_NO_MSG_AVAILABLEが返されるまで繰り返しメッセージをMQGETします。

Cmd> PowerShell -File ./dltmsg.ps1 -m PLQMS または PS> ./dltmsg -m PLQMS ... Command: ./mqpgf -qm PLQMS -q REQ1 -r [2022/04/26 15:19:47.856] 1: message length: 4 get message : xxxx [2022/04/26 15:19:47.856] 2: message length: 4 get message : xxxx [2022/04/26 15:19:47.856] 3: message length: 4 get message : xxxx no message available : REQ1 CompCd=02 ReasonCd=2033 Elapsed time = 16 msec Command: ./mqpgf -qm PLQMS -q REP1 -r no message available : REP1 CompCd=02 ReasonCd=2033 Elapsed time = 20 msec ... >

伝送キューの場合はさらに、MCAによってキューが読み込み禁止 GET(DISABLED) にされている場合があります。 必要に応じて手動で読み込み許可 GET(ENABLED) にします。 念のためオペレーション例を示しておきます。

$ ./dltmsg.sh PLQMS mqpgf -qm PLQMS -q PLQMR -r MQGET fail : PLQMR CompCd=02 ReasonCd=2016 MQBACK success : CompCd=00 ReasonCd=00 Elapsed time = 0.322203 sec ... $ $ mqrc 2016 2016 0x000007e0 MQRC_GET_INHIBITED ※書き込み禁止の為、MQGETが失敗したことを示します。 $ $ mqpcf que -qm PLQMS -q PLQMR GET 1: QUEUE(PLQMR) TYPE(QLOCAL) GET(DISABLED) $ $ mqpcf get enable -qm PLQMS -q PLQMR ※書き込み許可に変更 Get Enabled : PLQMR $ $ mqpcf que -qm PLQMS -q PLQMR GET 1: QUEUE(PLQMR) TYPE(QLOCAL) GET(ENABLED) $ $ ./dltmsg.sh PLQMS ... Command: ./mqpgf -qm PLQMS -q REQ1 -r [2022/04/26 15:19:47.856] 1: message length: 4 get message : xxxx [2022/04/26 15:19:47.856] 2: message length: 4 get message : xxxx [2022/04/26 15:19:47.856] 3: message length: 4 get message : xxxx no message available : REQ1 CompCd=02 ReasonCd=2033 Elapsed time = 16 msec Command: ./mqpgf -qm PLQMS -q REP1 -r no message available : REP1 CompCd=02 ReasonCd=2033 Elapsed time = 20 msec ...


RR-1 ローカル接続テストの実施

RR-1固有の入力は下記環境変数のみです。
デフォルトのネーミングを変更する場合は、<QMGR>.mqsc.srcを変更してキューマネージャーを再作成するか、手動でキューを定義し、runpfmts.bat/iniを変更します。
※以降、キューマネージャーやキューなどのオブジェクト名はデフォルトの名前を使用している前提にしますので、適時読み替えてください。

変数名 デフォルト マシン 説明
RR1_RequestQ REQ1 Source リクエストキュー名
RR1_ReplyQ REP1 Source リプライキュー名

RR-1 MQI Local Bindingsを実施する為のスクリプトは下表に示す種類があります。
用途に合ったものを使用するか、それぞれを実行してその結果を比較します。

スクリプト名 プラットフォーム 説明
RR_1_s.ps1 Windows プロセス
RR_1_s.sh Linux, HPE Nonstop プロセス
RR_1_s_t.ps1 Windows スレッド
RR_1_s_t.sh Linux, HPE Nonstop スレッド

以下、各スクリプトの実行サンプルを示します。
※掲載の実行サンプルは全てINCL_CON_TIME=0での実施例です。
RR-1で指定するデータファイルはリクエスターから送信される要求メッセージで、リスポンダーはリクエスターからのメッセージをそのまま折り返します。
(注意)mqpgfの通常版を使用してテストする場合はデータファイルの指定(最後の引数)は使用できませんので省略してください。

下記の実施例を示します。
Linux/HPE NonStopはスクリプトが共通なので表示は同じです。

No. ソース・サーバー Process/Thread
1. Windows Process
2. Linux, HPE NonStop Process
3. Windows Thread
4. Linux, HPE NonStop Thread


[ 1. RR-1 接続毎にプロセスを起動 Windows(RR_1_s.ps1)]

...\script_s> PowerShell -File ./RR_1_s.ps1 PLQMS 10 5000 20480 logs RR-1 MQPER_PERSISTENT data/RR_1_1_req.dat ※Qmgr:PLQMS, 接続数:10, メッセージ数:5000, メッセージ長:20480, ログディレクトリ:logs, パーシステント Directory: ...\script_s\logs Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2022/08/16 10:25 RR-1_20480_10_PLQMS_20220816_102522 ※作成されたログディレクトリの名称 TARGET_QMGR: PLQMS Connections: 10 Messages: 5000 Bytes: 20480 LogDirPre: logs Workload: RR-1 MQ_Constant: MQPER_PERSISTENT DataFile: data/RR_1_1_req.dat ※プロセスの開始処理の同期をとるためのファイルが事前に削除される delete syncstart file for synchronization start. ※指定接続数分リスポンダー・プロセスが起動される。 Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 5000 -cr 10 -wp 1000 -sz 163840 -ss -l 20480 MQMT_REPLY MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -im start background: 1 of 10. Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 5000 -cr 10 -wp 1000 -sz 163840 -ss -l 20480 MQMT_REPLY MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -im start background: 2 of 10. ... Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 5000 -cr 10 -wp 1000 -sz 163840 -ss -l 20480 MQMT_REPLY MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -im start background: 10 of 10. ※次にリクエスター・プロセスが指定接続数分起動される。 Start Requester Program, Put REQ1, Get REP1 mqpgf -qm PLQMS -q REQ1 -f data/RR_1_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -n 5000 -l 20480 -sf syncstart -cr 10 -wp 1000 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 1 of 10. Start Requester Program, Put REQ1, Get REP1 mqpgf -qm PLQMS -q REQ1 -f data/RR_1_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -n 5000 -l 20480 -sf syncstart -cr 10 -wp 1000 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 2 of 10. ... Start Requester Program, Put REQ1, Get REP1 mqpgf -qm PLQMS -q REQ1 -f data/RR_1_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -n 5000 -l 20480 -sf syncstart -cr 10 -wp 1000 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 10 of 10. Directory: ...\script_s Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2022/08/16 10:25 0 syncstart ※プロセスの開始処理の同期をとるためのファイルが作成されて処理が開始される。 The number of the sampling process displayed: 0 Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 187 14 3976 12392 0.09 17556 3 mqpgf ※5秒間隔で起動中のプロセスの内で最も早く起動したプロセスの実行状況がサンプルとして表示される。 ... The end of the test command has been detected. Process Number: 0 The number of the sampling process displayed: 1 Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 0 5 772 6880 1.53 13668 3 mqpgf ※プロセス番号 0 の終了が検知され、次にプロセス番号 1 の実行状況がサンプルとして表示される。 The end of the test command has been detected. Process Number: 1 The end of the test command has been detected. Process Number: 2 ... The end of the test command has been detected. Process Number: 19 ※全てのプロセスの終了が検知される。 Start Time: 2022/08/16 10:25:23.410 Stop Time: 2022/08/16 10:25:29.787 Elapsed Time: 00:00:06.3770000 Total Number of messages: 50000 Round Trips/sec: 7840.67743453034 ※測定結果が表示され、console.logにも同じ内容が書き込まれる。 ...\script_s>


[ 2. RR-1 接続毎にプロセスを起動 Linux, HPE NonStop(RR_1_s.sh)]

.../script_s$ ./RR_1_s.sh PLQMS 5 2000 10240 logs RR-1 MQPER_NOT_PERSISTENT data/RR_1_1_req.dat ※Qmgr:PLQMS, 接続数:5, メッセージ数:2000, メッセージ長:10240, ログディレクトリ:logs, ノンパーシステント ※プロセスの開始処理の同期をとるためのファイルが事前に削除される delete syncstart file for synchronization start. ※指定接続数分リスポンダー・プロセスが起動される。 Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 2000 -cr 10 -wp 1000 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im start background: 1 of 5. Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 2000 -cr 10 -wp 1000 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im start background: 2 of 5. ... Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 2000 -cr 10 -wp 1000 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im start background: 5 of 5. ※次にリクエスター・プロセスが指定接続数分起動される。 Start Requester Program, Put REQ1, Get REP1 mqpgf -qm PLQMS -q REQ1 -f data/RR_1_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 2000 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 20480 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 1 of 5. Start Requester Program, Put REQ1, Get REP1 mqpgf -qm PLQMS -q REQ1 -f data/RR_1_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 2000 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 20480 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 2 of 5. ... Start Requester Program, Put REQ1, Get REP1 mqpgf -qm PLQMS -q REQ1 -f data/RR_1_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 2000 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 20480 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 5 of 5. ※プロセスの開始処理の同期をとるためのファイルが作成されて処理が開始される。 create syncstart file for synchronization start. ※全てのプロセスの終了が検知される。 Waiting for the completion of the test process......terminated. Start Time: 22/11/08 10:52:54.362 Stop Time: 22/11/08 10:53:00.000 Elapsed Time: 5.638 Total Number of messages: 10000 Round Trips/sec: 1773.679 ※測定結果が表示され、console.logにも同じ内容が書き込まれる。 .../script_s$


[ 3. RR-1 接続毎にスレッドを生成 Windows(RR_1_s_t.ps1)]

...\script_s> PowerShell -File ./RR_1_s_t.ps1 PLQMS 10 5000 20480 logs RR-1 MQPER_PERSISTENT data/RR_1_1_req.dat ※Qmgr:PLQMS, 接続数:10, メッセージ数:5000, メッセージ長:20480, ログディレクトリ:logs, パーシステント Directory: ...\script_s\logs Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2022/08/16 14:21 RR-1_20480_10_PLQMS_20220816_142125 ※作成されたログディレクトリの名称 TARGET_QMGR: PLQMS Connections: 10 Messages: 5000 Bytes: 20480 LogDirPre: logs Workload: RR-1 MQ_Constant: MQPER_PERSISTENT DataFile: data/RR_1_1_req.dat ※指定接続数に関わらず、1つのリスポンダー・プロセスが起動される。 Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 5000 -cr 10 -wp 1000 -ni 10 -sz 163840 -ss -l 20480 MQMT_REPLY MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -im ※次に指定接続数に関わらず、1つのリクエスター・プロセスが起動される。 Start Requester Program, Put REQ1, Get REP1 mqpgf -qm PLQMS -q REQ1 -f data/RR_1_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -n 5000 -l 20480 -cr 10 -wp 1000 -ni 10 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc The number of the sampling process displayed: 0 Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 298 16 5416 12312 0.17 18836 5 mqpgf ※5秒間隔で起動中のプロセスの内で最も早く起動したプロセスの実行状況がサンプルとして表示される。 ... The end of the test command has been detected. Process Number: 0 The end of the test command has been detected. Process Number: 1 ※全てのプロセスの終了が検知される。 Start Time: 2022/08/16 14:21:25.334 Stop Time: 2022/08/16 14:21:37.778 Elapsed Time: 00:00:12.4440000 Total Number of messages: 50000 Round Trips/sec: 4018.0006428801 ※測定結果が表示され、console.logにも同じ内容が書き込まれる。 ...\script_s>


[ 4. RR-1 接続毎にスレッドを生成 Linux, HPE NonStop(RR_1_s_t.sh)]

.../script_s$ ./RR_1_s_t.sh PLQMS 5 2000 10240 logs RR-1 MQPER_NOT_PERSISTENT data/RR_1_1_req.dat ※Qmgr:PLQMS, 接続数:5, メッセージ数:2000, メッセージ長:10240, ログディレクトリ:logs, ノンパーシステント Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 2000 -cr 10 -wp 1000 -ni 5 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im Start Requester Program, Put REQ1, Get REP1 mqpgf -qm PLQMS -q REQ1 -f data/RR_1_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 2000 -l 10240 -cr 10 -wp 1000 -ni 5 -ss -sz 20480 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc Waiting for the completion of the test process........terminated. ※指定接続数に関わらず、一対のリスポンダー/リクエスター・プロセスが起動され、その終了が検知される。 Start Time: 22/08/16 15:02:40.083 Stop Time: 22/08/16 15:02:48.200 Elapsed Time: 8.117 Total Number of messages: 10000 Round Trips/sec: 1231.982 ※測定結果が表示され、console.logにも同じ内容が書き込まれる。 .../script_s$


RR-2 クライアント接続テストの実施

RR-2固有の入力は下記の環境変数です。

変数名 デフォルト マシン 説明
RR2_RequestQ REQ1 Client/Source リクエストキュー名
RR2_ReplyQ REP1 Client/Source リプライキュー名
CONNAME localhost(1414) Client 接続文字列: ipaddr or hostname(port)
CHANNEL PLQMS.MQICHL Client 接続チャネル名
MQSSLKEYR ' ' Client 鍵リポジトリーの場所(TLSチャネル用)
CERTLABL ' ' Client 証明書ラベル(TLSチャネル用)
SSLCIPH ' ' Client SSL暗号仕様(TLSチャネル用)

RR2_RequestQ、RR2_ReplyQにはクライアントとソース・サーバーで同じ名称が設定されます。 CONNAMEとCHANNELはクライアント側にのみ設定が必要です。 MQSSLKEYR、CERTLABL、SSLCIPHはTLSチャネルを使用する場合にのみ必要で、クライアント側にのみ設定します。 RR2_RequestQ、RR2_ReplyQ、CHANNELをデフォルト以外の名前に変更する場合は、<QMGR>.mqsc.srcも同時に変更してキューマネージャーを再作成するか、手動でオブジェクトを定義します。 SSLCIPHの値を変更する場合は、<QMGR>.mqsc.srcのCHANNELで指定したサーバー接続チャネルのSSLCIPHプロパティも変更してキューマネージャーを再作成するか、手動でオブジェクトを変更します。

RR-2 MQI Client Bindingsを実施する為のスクリプトは下表に示す種類があります。
クライアントとソース・サーバーで使用するマシン、スクリプトの組み合わせは任意です。 用途に合ったものを使用するか、それぞれを実行してその結果を比較します。

スクリプト名 プラットフォーム マシン 説明
RR_2_c.ps1 Windows Client For Requester(プロセス)
RR_2_c.sh Linux, HPE Nonstop Client For Requester(プロセス)
RR_2_c_t.ps1 Windows Client For Requester(スレッド)
RR_2_c_t.sh Linux, HPE Nonstop Client For Requester(スレッド)
RR_2_s.ps1 Windows Source For Responder(プロセス)
RR_2_s.sh Linux, HPE Nonstop Source For Responder(プロセス)
RR_2_s_t.ps1 Windows Source For Responder(スレッド)
RR_2_s_t.sh Linux, HPE Nonstop Source For Responder(スレッド)

RR-2で指定するデータファイルはリクエスター、リスポンダーでそれぞれ別々のファイルを指定可能です。 リスポンダー側でデーター・ファイルの指定を省略した場合は、リクエスターからのメッセージをそのまま折り返します。
(注意)mqpgfの通常版を使用してテストする場合はデータファイルの指定(最後の引数)は使用できませんので省略してください。

クライアント、ソース・サーバーで使用するプラットフォーム、およびプロセス/スレッドの組み合わせは自由ですが、例として下記のパターンを示します。

No. クライアント ソース・サーバー TLS使用
1. Windows(プロセス) Windows(プロセス)
2. Windows(スレッド) NonStop(プロセス) TLS Channel
3. Linux(スレッド) NonStop(スレッド)


[ 1. RR-2 Windows-Windows、クライアント/サーバー共に接続毎にプロセスを起動 ]


リスポンダー側 接続毎にプロセスを起動 Windows(RR_2_s.ps1)

必ずリスポンダー側を先に起動します。
リスポンダーとリクエスターの接続数とメッセージ件数は必ず一致させておく必要があります。
下記はテスト完了時までの表示です。

...\script_s> PowerShell -File ./RR_2_s.ps1 PLQMS 5 100 10240 logs RR-2 MQPER_NOT_PERSISTENT data/RR_2_1_rep.dat ※Qmgr:PLQMS, 接続数:5, メッセージ数:100, メッセージ長:10240, ログディレクトリ:logs, ノンパーシステント Directory: ...\script_s\logs Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2022/11/08 17:10 RR-2_10240_5_PLQMS_20221108_171051 ※作成されたログディレクトリの名称 TARGET_QMGR: PLQMS Connections: 5 Messages: 100 Bytes: 10240 LogDirPre: logs Workload: RR-2 MQ_Constant: MQPER_NOT_PERSISTENT DataFile: data/RR_2_1_rep.dat ※指定接続数分リスポンダー・プロセスが起動される。 Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 163840 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_2_1_rep.dat start background: 1 of 5. Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 163840 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_2_1_rep.dat start background: 2 of 5. ... Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 163840 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_2_1_rep.dat start background: 5 of 5. The number of the sampling process displayed: 0 Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 186 13 3436 10604 0.08 21156 4 mqpgf ※5秒間隔で起動中のプロセスの内で最も早く起動したプロセスの実行状況がサンプルとして表示される。 ... The end of the test command has been detected. Process Number: 0 The end of the test command has been detected. Process Number: 1 ... The end of the test command has been detected. Process Number: 4 ※全てのプロセスの終了が検知される。 Start Time: 2022/11/08 17:11:01.440 Stop Time: 2022/11/08 17:11:02.189 Elapsed Time: 00:00:00.7490000 Total Number of messages: 500 Round Trips/sec: 667.556742323097 ※測定結果が表示され、console.logにも同じ内容が書き込まれる。 ...\script_s>


リクエスター側 接続毎にプロセスを起動 Windows(RR_2_c.ps1)

続いてリクエスター側を起動します。

...\script_c> PowerShell -File ./RR_2_c.ps1 PLQMS 5 100 10240 logs RR-2 MQPER_NOT_PERSISTENT data/RR_2_1_req.dat ※Qmgr:PLQMS, 接続数:5, メッセージ数:100, メッセージ長:10240, ログディレクトリ:logs, ノンパーシステント Directory: ...\script_c\logs Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2022/11/08 17:10 RR-2_10240_5_PLQMS_20221108_171059 ※作成されたログディレクトリの名称 TARGET_QMGR: PLQMS Connections: 5 Messages: 100 Bytes: 10240 LogDirPre: logs Workload: RR-2 MQ_Constant: MQPER_NOT_PERSISTENT DataFile: data/RR_2_1_req.dat ※プロセスの開始処理の同期をとるためのファイルが事前に削除される delete syncstart file for synchronization start. ※指定接続数分リクエスター・プロセスが起動される。 Start Requester Program, Put REQ1, Get REP1 mqpgfc -qm PLQMS -q REQ1 -x localhost(1414) -ch PLQMS.MQICHL -f data/RR_2_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 100 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 1 of 5. Start Requester Program, Put REQ1, Get REP1 mqpgfc -qm PLQMS -q REQ1 -x localhost(1414) -ch PLQMS.MQICHL -f data/RR_2_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 100 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 2 of 5. ... Start Requester Program, Put REQ1, Get REP1 mqpgfc -qm PLQMS -q REQ1 -x localhost(1414) -ch PLQMS.MQICHL -f data/RR_2_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 100 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 5 of 5. Directory: ...\script_c Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2022/11/08 17:11 0 syncstart ※プロセスの開始処理の同期をとるためのファイルが作成されて処理が開始される。 The number of the sampling process displayed: 0 Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 222 16 3308 11352 0.11 14928 4 mqpgfc ※5秒間隔で起動中のプロセスの内で最も早く起動したプロセスの実行状況がサンプルとして表示される。 The end of the test command has been detected. Process Number: 0 The end of the test command has been detected. Process Number: 1 ... The end of the test command has been detected. Process Number: 4 ※全てのプロセスの終了が検知される。 Start Time: 2022/11/08 17:11:01.265 Stop Time: 2022/11/08 17:11:02.189 Elapsed Time: 00:00:00.9240000 Total Number of messages: 500 Round Trips/sec: 541.125541125541 ※測定結果が表示され、console.logにも同じ内容が書き込まれる。 ...\script_s>


[ 2. RR-2 Windows-HPE NonStop、接続毎にスレッド(クライアント)、接続毎にプロセス(サーバー)を起動 ]


< 簡単なクライアント接続の確認方法 >

TLSチャネルを使用するので、ここでrunpfmts.bat/iniのTLS用パラメータやクライアント接続用パラメータが正しく設定されているかをチェックする簡単な方法をご紹介します。

クライアント接続用の各運用スクリプトは全てこのファイルを参照してサーバーと接続します。 TLSチャネルを使用する場合は、テストで使用するチャネルと同じチャネルを使用してTLS接続を行います。 特にckchl_c.ps1/shを実行すると、それ自体が接続しているクライアント接続チャネル(デフォルト:PLQMS.MQICHL)のステータスが接続に使用されたパラメータ(SECPROT,SSLCERTI,SSLCIPH,SSLPEER,STATUS等)と共に表示されます。

...\script_s> PowerShell -File ckchl_c.ps1 -m PLQMST Command: mqpcfc chs -qm PLQMST -c PLQMS.MQICHL -x "16.147.169.198(18598)" -ch PLQMS.MQICHL -cs TLS_RSA_WITH_AES_256_CBC_SHA256 -lb PLCLA MQCD_VERSION_11 STATUS SECPROT SSLCERTI SSLCIPH SSLPEER 1: CHANNEL(PLQMS.MQICHL) CHLTYPE(SVRCONN) CONNAME(xxx.xxx.xxx.xxx) CHLINSTYPE(CURRENT) SECPROT(TLSV12) SSLCERTI(E=support@pulsarintegration.com,CN=www.pulsarintegration.com, O=Pulsar Integration Inc.,ST=Chiba,C=JP) SSLCIPH(TLS_RSA_WITH_AES_256_CBC_SHA256) SSLPEER(SERIALNUMBER=06,CN=www.pulsarintegration.PLCL.com,O=Pulsar Integration PLCL Inc., ST=Fukuoka,C=JP) STATUS(RUNNING) STOPREQ(NO) SUBSTATE(RECEIVE) RAPPLTAG(...\mqpcfc.exe) ... ※このコマンドは<QMGR>.mqscファイル内の全てのチャネルの状況を表示します。 ...\script_s>


リスポンダー側 接続毎にプロセスを起動 HPE NonStop(RR_2_s.sh)

必ずリスポンダー側を先に起動します。
リスポンダーとリクエスターの接続数とメッセージ件数は必ず一致させておく必要があります。
下記はテスト完了時までの表示です。

...script_s_TLS$ ./RR_2_s.sh PLQMST 5 100 10240 logs RR-2 MQPER_NOT_PERSISTENT data/RR_2_1_rep.dat ※Qmgr:PLQMST, 接続数:5, メッセージ数:100, メッセージ長:10240, ログディレクトリ:logs, ノンパーシステント ※指定接続数分リスポンダー・プロセスが起動される。 Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMST -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_2_1_rep.dat start background: 1 of 5. Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMST -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_2_1_rep.dat start background: 2 of 5. ... Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMST -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_2_1_rep.dat start background: 5 of 5. Waiting for the completion of the test process........................................... ................................terminated. ※全てのプロセスの終了が検知される。 Start Time: 22/11/09 15:23:07.051 Stop Time: 22/11/09 15:24:12.793 Elapsed Time: 65.742 Total Number of messages: 500 Round Trips/sec: 7.605 ※測定結果が表示され、console.logにも同じ内容が書き込まれる。 .../script_s_TLS$


リクエスター側 接続毎にスレッドを起動 Windows(RR_2_c_t.ps1)

続いてリクエスター側を起動します。

...\script_c_TLS> PowerShell -File ./RR_2_c_t.ps1 PLQMST 5 100 10240 logs RR-2 MQPER_NOT_PERSISTENT data/RR_2_1_req.dat ※Qmgr:PLQMST, 接続数:5, メッセージ数:100, メッセージ長:10240, ログディレクトリ:logs, ノンパーシステント Directory: ...\script_c_TLS\logs Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2022/11/09 15:22 RR-2_10240_5_PLQMST_20221109_152252 ※作成されたログディレクトリの名称 TARGET_QMGR: PLQMST Connections: 5 Messages: 100 Bytes: 10240 LogDirPre: logs Workload: RR-2 MQ_Constant: MQPER_NOT_PERSISTENT DataFile: data/RR_2_1_req.dat ※指定接続数に関わらず、1つのリクエスター・プロセスが起動される。 Start Requester Program, Put REQ1, Get REP1 mqpgfc -qm PLQMST -q REQ1 -x 16.147.169.198(18598) -ch PLQMS.MQICHL -f data/RR_2_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -ni 5 -n 100 -l 10240 -cr 10 -wp 1000 -cs TLS_RSA_WITH_AES_256_CBC_SHA256 -cl PLCLA MQCD_VERSION_11 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc ※5秒間隔でプロセスの実行状況が表示される。 Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 105 10 2092 6524 0.02 27396 4 mqpgfc ... The end of the test command has been detected. ※プロセスの終了が検知される。 Start Time: 2022/11/09 15:23:05.927 Stop Time: 2022/11/09 15:24:13.145 Elapsed Time: 00:01:07.2180000 Total Number of messages: 500 Round Trips/sec: 7.43848373947455 ※測定結果が表示され、console.logにも同じ内容が書き込まれる。 ...\script_c_TLS>


[ 3. RR-2 Linux-HPE NonStop、クライアント/サーバー共に接続毎にスレッドを起動 ]


リスポンダー側 接続毎にスレッドを起動 HPE NonStop(RR_2_s_t.sh)

必ずリスポンダー側を先に起動します。
リスポンダーとリクエスターの接続数とメッセージ件数は必ず一致させておく必要があります。
下記はテスト完了時までの表示です。

...script_s$ ./RR_2_s_t.sh PLQMS 5 100 10240 logs RR-2 MQPER_NOT_PERSISTENT data/RR_2_1_rep.dat ※Qmgr:PLQMS, 接続数:5, メッセージ数:100, メッセージ長:10240, ログディレクトリ:logs, ノンパーシステント ※指定接続数に関わらず、1つのリクエスター・プロセスが起動される。 Start Responder Program, Get REQ1, Put REP1 mqpgf -qm PLQMS -q REQ1 -oq REP1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -ni 5 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_2_1_rep.dat Waiting for the completion of the test process.............terminated. ※プロセスの終了が検知される。 Start Time: 22/11/11 14:24:58.953 Stop Time: 22/11/11 14:24:59.730 Elapsed Time: 0.777 Total Number of messages: 500 Round Trips/sec: 643.501 ※測定結果が表示され、console.logにも同じ内容が書き込まれる。 .../script_s$


リクエスター側 接続毎にスレッドを起動 Linux(RR_2_c_t.sh)

続いてリクエスター側を起動します。

../script_c$ ./RR_2_c_t.sh PLQMS 5 100 10240 logs RR-2 MQPER_NOT_PERSISTENT data/RR_2_1_req.dat ※Qmgr:PLQMS, 接続数:5, メッセージ数:100, メッセージ長:10240, ログディレクトリ:logs, ノンパーシステント ※指定接続数に関わらず、1つのリクエスター・プロセスが起動される。 Start Requester Program, Put REQ1, Get REP1 mqpgfc -qm PLQMS -q REQ1 -x 172.21.10.50(18599) -ch PLQMS.MQICHL -f data/RR_2_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPMO_NO_SYNCPOINT -ni 5 -n 100 -l 10240 -cr 10 -wp 1000 -ss -sz 20480 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc Waiting for the completion of the test process.terminated. ※プロセスの終了が検知される。 Start Time: 22/11/11 14:15:51.474 Stop Time: 22/11/11 14:15:52.277 Elapsed Time: 0.803 Total Number of messages: 500 Round Trips/sec: 622.665 ※測定結果が表示され、console.logにも同じ内容が書き込まれる。 .../script_c$


RR-5 サーバー間接続テストの実施

RR-5固有の入力は下記の環境変数です。
送受信キューはRR5_RequestQPrefix、RR5_ReplyQPrefixに設定されるプレフィクスに連番がつけられた名前になっています。
送受信キューはデフォルトで5組定義されていますので、接続数の最大は5迄です。 接続数を増やす場合や、デフォルトのプレフィクスを変更する場合は、<QMGR>.mqsc.srcを変更してキューマネージャーを再作成するか、手動でキューを定義し、runpfmts.bat/iniを変更します。 キュー名称にプレフィクスと連番の形式を使用しない場合は、スクリプトの変更が必要です。

変数名 デフォルト マシン 説明
RR5_RequestQPrefix REQR Source リクエストキュー・プレフィクス
REQ Response
RR5_ReplyQPrefix REP Source リプライキュー・プレフィクス
REPS Response

RR-5 MQI Distributed Queuingを実施の為のスクリプトは下表に示す種類があります。
接続毎にプロセスが起動され、1接続につき1対の送受信キューと1サーバー間接続チャネルが対応します。 ソース/レスポンス・サーバーで使用するマシン、スクリプトの組み合わせは任意です。 用途に合ったものを使用するか、それぞれを実行してその結果を比較します。

スクリプト名 プラットフォーム マシン 説明
RR_5_s.ps1 Windows Source For Requester(プロセス)
RR_5_s.sh Linux, HPE Nonstop Source For Requester(プロセス)
RR_5_r.ps1 Windows Response For Responder(プロセス)
RR_5_r.sh Linux, HPE Nonstop Response For Responder(プロセス)

RR-5で指定するデータファイルはリクエスター、リスポンダーでそれぞれ別々のファイルを指定可能です。 リスポンダー側でデーター・ファイルの指定を省略した場合は、リクエスターからのメッセージをそのまま折り返します。
(注意)mqpgfの通常版を使用してテストする場合はデータファイルの指定(最後の引数)は使用できませんので省略してください。

例として下記のパターンを示します。
Linux/HPE NonStopはスクリプトが共通なので表示は同じです。 また、TLSのパラメータはチャネルに設定されるので、TLSの使用有無に関わらず表示は同じです。

No. ソース・サーバー レスポンス・サーバー TLS使用
1. Windows Windows
2. NonStop Linux TLS Channel


[ 1. RR-5 Windows-Windows、ソース/レスポンス・サーバー共に接続毎にプロセスを起動 ]


RR-5 リスポンダー側 接続毎にプロセスを起動 Windows(RR_5_r.ps1)

必ずリスポンダー側を先に起動します。
リスポンダーとリクエスターの接続数とメッセージ件数は必ず一致させておく必要があります。
下記はテスト完了時までの表示です。

PS ...\script_r> ./RR_5_r PLQMR 5 100 10240 logs RR-5 PMQPER_NOT_PERSISTENT data/RR_5_1_rep.dat ※Qmgr:PLQMR, 接続数:5, メッセージ数:100, メッセージ長:10240, ログディレクトリ:logs, ノンパーシステント Directory: ...\script_r\logs Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2022/11/15 17:37 RR-5_10240_5_PLQMR_20221115_173751 ※作成されたログディレクトリの名称 TARGET_QMGR: PLQMR Connections: 5 Messages: 100 Bytes: 10240 LogDirPre: logs Workload: RR-5 MQ_Constant: MQPER_NOT_PERSISTENT DataFile: data/RR_5_1_rep.dat ※指定接続数分プロセスが起動される。 Start Responder Program, Get REQ1, Put REPS1 mqpgf -qm PLQMR -q REQ1 -oq REPS1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 163840 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_5_1_rep.dat start background: 1 of 5. Start Responder Program, Get REQ2, Put REPS2 mqpgf -qm PLQMR -q REQ2 -oq REPS2 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 163840 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_5_1_rep.dat start background: 2 of 5. ... Start Responder Program, Get REQ5, Put REPS5 mqpgf -qm PLQMR -q REQ5 -oq REPS5 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 163840 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_5_1_rep.dat start background: 5 of 5. The number of the sampling process displayed: 0 Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 191 13 3416 10680 0.05 30172 4 mqpgf ※5秒間隔で起動中のプロセスの内で最も早く起動したプロセスの実行状況がサンプルとして表示される。 The end of the test command has been detected. Process Number: 0 The end of the test command has been detected. Process Number: 1 The end of the test command has been detected. Process Number: 2 The end of the test command has been detected. Process Number: 3 The end of the test command has been detected. Process Number: 4 ※全てのプロセスの終了が検知される。 Start Time: 2022/11/15 17:37:53.804 Stop Time: 2022/11/15 17:37:54.092 Elapsed Time: 00:00:00.2880000 Total Number of messages: 500 Round Trips/sec: 1736.11111111111 ※測定結果が表示され、console.logにも同じ内容が書き込まれる。 PS ...\script_r>


RR-5 リクエスター側 接続毎にプロセスを起動 Windows(RR_5_s.ps1)

続いてリクエスター側を起動します。

PS ...\script_s> ./RR_5_s PLQMS 5 100 10240 logs RR-5 MQPER_NOT_PERSISTENT data/RR_5_1_req.dat ※Qmgr:PLQMS, 接続数:5, メッセージ数:100, メッセージ長:10240, ログディレクトリ:logs, ノンパーシステント Directory: ...\script_s\logs Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2022/11/15 17:37 RR-5_10240_5_PLQMS_20221115_173753 ※作成されたログディレクトリの名称 TARGET_QMGR: PLQMS Connections: 5 Messages: 100 Bytes: 10240 LogDirPre: logs Workload: RR-5 MQ_Constant: MQPER_NOT_PERSISTENT DataFile: data/RR_5_1_req.dat ※プロセスの開始処理の同期をとるためのファイルが事前に削除される delete syncstart file for synchronization start. ※指定接続数分プロセスが起動される。 Start Requester Program, Put REQR1, Get REP1 mqpgf -qm PLQMS -q REQR1 -f data/RR_5_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 100 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 1 of 5. Start Requester Program, Put REQR2, Get REP2 mqpgf -qm PLQMS -q REQR2 -f data/RR_5_1_req.dat -iq REP2 -rq REP2 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 100 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 2 of 5. ... Start Requester Program, Put REQR5, Get REP5 mqpgf -qm PLQMS -q REQR5 -f data/RR_5_1_req.dat -iq REP5 -rq REP5 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 100 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 5 of 5. Directory: ...\script_s Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2022/11/15 17:37 0 syncstart ※プロセスの開始処理の同期をとるためのファイルが作成されて処理が開始される。 The number of the sampling process displayed: 0 Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 192 13 3460 11168 0.09 29624 4 mqpgf ※5秒間隔で起動中のプロセスの内で最も早く起動したプロセスの実行状況がサンプルとして表示される。 The end of the test command has been detected. Process Number: 0 The end of the test command has been detected. Process Number: 1 The end of the test command has been detected. Process Number: 2 The end of the test command has been detected. Process Number: 3 The end of the test command has been detected. Process Number: 4 ※全てのプロセスの終了が検知される。 Start Time: 2022/11/15 17:37:53.796 Stop Time: 2022/11/15 17:37:54.092 Elapsed Time: 00:00:00.2960000 Total Number of messages: 500 Round Trips/sec: 1689.18918918919 PS ...\script_s>


[ 2. RR-5 HPE NonStop-Linux、ソース/レスポンス・サーバー共に接続毎にプロセスを起動 ]


RR-5 リスポンダー側 接続毎にプロセスを起動 Linux(RR_5_r.sh)

必ずリスポンダー側を先に起動します。
リスポンダーとリクエスターの接続数とメッセージ件数は必ず一致させておく必要があります。
下記はテスト完了時までの表示です。

.../script_r_TLS$ ./RR_5_r.sh PLQMRT 5 100 10240 logs RR-5 MQPER_NOT_PERSISTENT data/RR_5_1_rep.dat ※Qmgr:PLQMRT, 接続数:5, メッセージ数:100, メッセージ長:10240, ログディレクトリ:logs, ノンパーシステント ※指定接続数分プロセスが起動される。 Start Responder Program, Get REQ1, Put REPS1 mqpgf -qm PLQMRT -q REQ1 -oq REPS1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_5_1_rep.dat start background: 1 of 5. Start Responder Program, Get REQ2, Put REPS2 mqpgf -qm PLQMRT -q REQ2 -oq REPS2 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_5_1_rep.dat start background: 2 of 5. ... Start Responder Program, Get REQ5, Put REPS5 mqpgf -qm PLQMRT -q REQ5 -oq REPS5 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/RR_5_1_rep.dat start background: 5 of 5. Waiting for the completion of the test process......terminated. ※プロセスの終了が検知される。 Start Time: 22/11/17 16:43:13.387 Stop Time: 22/11/17 16:43:14.250 Elapsed Time: 0.863 Total Number of messages: 500 Round Trips/sec: 579.374 ※測定結果が表示され、console.logにも同じ内容が書き込まれる。 .../script_r_TLS$


RR-5 リクエスター側 接続毎にプロセスを起動 HPE NonStop(RR_5_s.sh)

続いてリクエスター側を起動します。

.../script_s_TLS$ ./RR_5_s.sh PLQMST 5 100 10240 logs RR-5 MQPER_NOT_PERSISTENT data/RR_5_1_req.dat ※Qmgr:PLQMST, 接続数:5, メッセージ数:100, メッセージ長:10240, ログディレクトリ:logs, ノンパーシステント ※プロセスの開始処理の同期をとるためのファイルが事前に削除される delete syncstart file for synchronization start. ※指定接続数分プロセスが起動される。 Start Requester Program, Put REQR1, Get REP1 mqpgf -qm PLQMST -q REQR1 -f data/RR_5_1_req.dat -iq REP1 -rq REP1 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 100 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 20480 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 1 of 5. Start Requester Program, Put REQR2, Get REP2 mqpgf -qm PLQMST -q REQR2 -f data/RR_5_1_req.dat -iq REP2 -rq REP2 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 100 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 20480 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 2 of 5. ... Start Requester Program, Put REQR5, Get REP5 mqpgf -qm PLQMST -q REQR5 -f data/RR_5_1_req.dat -iq REP5 -rq REP5 MQMT_REQUEST MQPER_NOT_PERSISTENT MQPMO_NO_SYNCPOINT -n 100 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 20480 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 5 of 5. ※プロセスの開始処理の同期をとるためのファイルが作成されて処理が開始される。 create syncstart file for synchronization start. Waiting for the completion of the test process.terminated. ※プロセスの終了が検知される。 Start Time: 22/11/17 16:52:40.264 Stop Time: 22/11/17 16:52:41.135 Elapsed Time: 0.871 Total Number of messages: 500 Round Trips/sec: 574.053 ※測定結果が表示され、console.logにも同じ内容が書き込まれる。 .../script_s_TLS$


PL-1 MQクラスター・テストの実施

PL-1固有の入力は下記の環境変数です。
送受信キューはPL1_RequestQPrefix、PL1_ReplyQPrefixに設定されるプレフィクスに連番がつけられた名前になっています。 送受信キューはデフォルトで5組定義されていますので、接続数の最大は5迄です。 接続数を増やす場合や、デフォルトのプレフィクスを変更する場合は、<QMGR>.mqsc.srcを変更してキューマネージャーを再作成するか、手動でキューを定義し、runpfmts.bat/iniを変更します。 キュー名称にプレフィクスと連番の形式を使用しない場合は、スクリプトの変更が必要です。

変数名 デフォルト マシン 説明
PL1_RequestQPrefix CQR Source リクエストキュー・プレフィクス
CQR Response
PL1_ReplyQPrefix CQS Source リプライキュー・プレフィクス
CQS Response

実施の為のスクリプトは下表に示す種類があります。
接続毎にプロセスが起動され、1接続につき1対の送受信キューが対応します。 ソース/レスポンス・サーバーで使用するマシン、スクリプトの組み合わせは任意です。 用途に合ったものを使用するか、それぞれを実行してその結果を比較します。

スクリプト名 プラットフォーム マシン 説明
PL_1_s.ps1 Windows Source PL-1 MQ Cluster (for Requester)(プロセス)
PL_1_s.sh Linux, HPE Nonstop Source PL-1 MQ Cluster (for Requester)(プロセス)
PL_1_r.ps1 Windows Response PL-1 MQ Cluster (for Responder)(プロセス)
PL_1_r.sh Linux, HPE Nonstop Response PL-1 MQ Cluster (for Responder)(プロセス)

PL-1で指定するデータファイルはリクエスター、リスポンダーでそれぞれ別々のファイルを指定可能です。 リスポンダー側でデーター・ファイルの指定を省略した場合は、リクエスターからのメッセージをそのまま折り返します。
(注意)mqpgfの通常版を使用してテストする場合はデータファイルの指定(最後の引数)は使用できませんので省略してください。

例として下記のパターンを示します。
Linux/HPE NonStopはスクリプトが共通なので表示は同じです。 また、TLSのパラメータはチャネルに設定されるので、TLSの使用有無に関わらず表示は同じです。

No. ソース・サーバー レスポンス・サーバー TLS使用
1. Windows Windows TLS Channel
2. NonStop Linux


[ 1. PL-1 HPE Windows-Windows、ソース/レスポンス・サーバー共に接続毎にプロセスを起動 ]


PL-1 リスポンダー側 接続毎にプロセスを起動 Windows(PL_1_r.ps1)

必ずリスポンダー側を先に起動します。
リスポンダーとリクエスターの接続数とメッセージ件数は必ず一致させておく必要があります。
下記はテスト完了時までの表示です。

PS ...\script_r_TLS> ./PL_1_r PLQMRT 5 1000 20480 logs PL-1 MQPER_PERSISTENT data/PL_1_1_rep.dat ※Qmgr:PLQMRT, 接続数:5, メッセージ数:1000, メッセージ長:20480, ログディレクトリ:logs, パーシステント Directory: ...\script_r_TLS\logs Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2023/01/24 18:01 PL-1_20480_5_PLQMRT_20230124_180108 ※作成されたログディレクトリの名称 ※指定接続数分プロセスが起動される。 TARGET_QMGR: PLQMRT Connections: 5 Messages: 1000 Bytes: 20480 LogDirPre: logs Workload: PL-1 MQ_Constant: MQPER_PERSISTENT DataFile: data/PL_1_1_rep.dat Start Responder Program, Get CQR1, Put CQS1 mqpgf -qm PLQMRT -q CQR1 -oq CQS1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 1000 -cr 10 -wp 1000 -sz 163840 -ss -l 20480 MQMT_REPLY MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/PL_1_1_rep.dat start background: 1 of 5. ... Start Responder Program, Get CQR5, Put CQS5 mqpgf -qm PLQMRT -q CQR5 -oq CQS5 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 1000 -cr 10 -wp 1000 -sz 163840 -ss -l 20480 MQMT_REPLY MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/PL_1_1_rep.dat start background: 5 of 5. The number of the sampling process displayed: 0 Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 187 13 3428 10744 0.06 11372 1 mqpgf ※5秒間隔で起動中のプロセスの内で最も早く起動したプロセスの実行状況がサンプルとして表示される。 The number of the sampling process displayed: 0 Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 188 13 3468 11364 0.11 11372 1 mqpgf The end of the test command has been detected. Process Number: 0 The end of the test command has been detected. Process Number: 1 The end of the test command has been detected. Process Number: 2 The end of the test command has been detected. Process Number: 3 The end of the test command has been detected. Process Number: 4 ※全てのプロセスの終了が検知される。 Start Time: 2023/01/24 18:01:11.334 Stop Time: 2023/01/24 18:01:17.454 Elapsed Time: 00:00:06.1200000 Total Number of messages: 5000 Round Trips/sec: 816.993464052288 ※測定結果が表示され、console.logにも同じ内容が書き込まれる。 PS ...\script_r_TLS>


PL-1 リクエスター側 接続毎にプロセスを起動 Windows(PL_1_s.ps1)

続いてリクエスター側を起動します。

PS ...\script_s_TLS> ./PL_1_s PLQMST 5 1000 20480 logs PL-1 MQPER_PERSISTENT data/PL_1_1_req.dat ※Qmgr:PLQMST, 接続数:5, メッセージ数:1000, メッセージ長:20480, ログディレクトリ:logs, パーシステント Directory: ...\script_s_TLS\logs Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2023/01/24 18:01 PL-1_20480_5_PLQMST_20230124_180110 ※作成されたログディレクトリの名称 TARGET_QMGR: PLQMST Connections: 5 Messages: 1000 Bytes: 20480 LogDirPre: logs Workload: PL-1 MQ_Constant: MQPER_PERSISTENT DataFile: data/PL_1_1_req.dat ※プロセスの開始処理の同期をとるためのファイルが事前に削除される delete syncstart file for synchronization start. ※指定接続数分プロセスが起動される。 Start Requester Program, Put CQR1, Get CQS1 mqpgf -qm PLQMST -q CQR1 -f data/PL_1_1_req.dat -iq CQS1 -rq CQS1 MQMT_REQUEST MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -n 1000 -l 20480 -sf syncstart -cr 10 -wp 1000 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 1 of 5. Start Requester Program, Put CQR2, Get CQS2 mqpgf -qm PLQMST -q CQR2 -f data/PL_1_1_req.dat -iq CQS2 -rq CQS2 MQMT_REQUEST MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -n 1000 -l 20480 -sf syncstart -cr 10 -wp 1000 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 2 of 5. ... Start Requester Program, Put CQR5, Get CQS5 mqpgf -qm PLQMST -q CQR5 -f data/PL_1_1_req.dat -iq CQS5 -rq CQS5 MQMT_REQUEST MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -n 1000 -l 20480 -sf syncstart -cr 10 -wp 1000 -ss -sz 163840 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 5 of 5. Directory: ...\script_s_TLS Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2023/01/24 18:01 0 syncstart ※プロセスの開始処理の同期をとるためのファイルが作成されて処理が開始される。 The number of the sampling process displayed: 0 Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 188 13 3452 11220 0.03 276 1 mqpgf ※5秒間隔で起動中のプロセスの内で最も早く起動したプロセスの実行状況がサンプルとして表示される。 The number of the sampling process displayed: 0 Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 188 13 3468 11160 0.25 276 1 mqpgf The end of the test command has been detected. Process Number: 0 The end of the test command has been detected. Process Number: 1 The end of the test command has been detected. Process Number: 2 The end of the test command has been detected. Process Number: 3 The end of the test command has been detected. Process Number: 4 ※全てのプロセスの終了が検知される。 Start Time: 2023/01/24 18:01:11.327 Stop Time: 2023/01/24 18:01:17.453 Elapsed Time: 00:00:06.1260000 Total Number of messages: 5000 Round Trips/sec: 816.193274567418 ※測定結果が表示され、console.logにも同じ内容が書き込まれる。 PS ...\script_s_TLS>


[ 2. PL-1 HPE NonStop-Linux、ソース/レスポンス・サーバー共に接続毎にプロセスを起動 ]


PL-1 リスポンダー側 接続毎にプロセスを起動 Linux(PL_1_r.sh)

必ずリスポンダー側を先に起動します。
リスポンダーとリクエスターの接続数とメッセージ件数は必ず一致させておく必要があります。
下記はテスト完了時までの表示です。

.../script_r$ ./PL_1_r.sh PLQMR 5 100 10240 logs PL-1 MQPER_PERSISTENT data/PL_1_1_rep.dat ※Qmgr:PLQMR, 接続数:5, メッセージ数:100, メッセージ長:10240, ログディレクトリ:logs, パーシステント ※指定接続数分プロセスが起動される。 Start Responder Program, Get CQR1, Put CQS1 mqpgf -qm PLQMR -q CQR1 -oq CQS1 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/PL_1_1_rep.dat start background: 1 of 5. Start Responder Program, Get CQR2, Put CQS2 mqpgf -qm PLQMR -q CQR2 -oq CQS2 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/PL_1_1_rep.dat start background: 2 of 5. ... Start Responder Program, Get CQR5, Put CQS5 mqpgf -qm PLQMR -q CQR5 -oq CQS5 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -n 100 -cr 10 -wp 1000 -sz 20480 -ss -l 10240 MQMT_REPLY MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -im -f data/PL_1_1_rep.dat start background: 5 of 5. Waiting for the completion of the test process........................................ ................terminated. ※プロセスの終了が検知される。 Start Time: 23/01/27 13:49:55.862 Stop Time: 23/01/27 13:50:18.696 Elapsed Time: 22.834 Total Number of messages: 500 Round Trips/sec: 21.897 ※測定結果が表示され、console.logにも同じ内容が書き込まれる。 .../script_r$


PL-1 リクエスター側 接続毎にプロセスを起動 HPE NonStop(PL_1_s.sh)

続いてリクエスター側を起動します。

.../script_s$ ./PL_1_s.sh PLQMS 5 100 10240 logs PL-1 MQPER_PERSISTENT data/PL_1_1_req.dat ※Qmgr:PLQMS, 接続数:5, メッセージ数:100, メッセージ長:10240, ログディレクトリ:logs, ノンパーシステント ※プロセスの開始処理の同期をとるためのファイルが事前に削除される delete syncstart file for synchronization start. ※指定接続数分プロセスが起動される。 Start Requester Program, Put CQR1, Get CQS1 mqpgf -qm PLQMS -q CQR1 -f data/PL_1_1_req.dat -iq CQS1 -rq CQS1 MQMT_REQUEST MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -n 100 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 20480 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 1 of 5. Start Requester Program, Put CQR2, Get CQS2 mqpgf -qm PLQMS -q CQR2 -f data/PL_1_1_req.dat -iq CQS2 -rq CQS2 MQMT_REQUEST MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -n 100 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 20480 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 2 of 5. ... Start Requester Program, Put CQR5, Get CQS5 mqpgf -qm PLQMS -q CQR5 -f data/PL_1_1_req.dat -iq CQS5 -rq CQS5 MQMT_REQUEST MQPER_PERSISTENT MQPMO_NO_SYNCPOINT -n 100 -l 10240 -sf syncstart -cr 10 -wp 1000 -ss -sz 20480 MQGMO_WAIT MQWI_UNLIMITED MQGMO_NO_SYNCPOINT MQGMO_ACCEPT_TRUNCATED_MSG -mc start background: 5 of 5. ※プロセスの開始処理の同期をとるためのファイルが作成されて処理が開始される。 create syncstart file for synchronization start. Waiting for the completion of the test process........terminated. ※プロセスの終了が検知される。 Start Time: 23/01/27 13:52:21.675 Stop Time: 23/01/27 13:52:46.081 Elapsed Time: 24.406 Total Number of messages: 500 Round Trips/sec: 20.487 ※測定結果が表示され、console.logにも同じ内容が書き込まれる。 .../script_s$

次回はテスト・リストを使用したテスト方法をご紹介します。

このページの先頭へ

このページの先頭へ