 | レベル: 初級 常盤 千絵, WebSphereテクニカル・セールス, IBM
2007年 4月 21日 更新 2009年 8月 14日 ご好評の記事、「MQの巻」の久々の改訂版(V7対応)です。今回は第8回「トラブル・シューティング」を改訂いたしました。
1 エラー状況の確認について
WebSphere MQの構成時やメッセージ処理中にエラーが発生した場合に、どこを確認するか、問題判別の概要についてご紹介します。
おもに、確認する項目としては、
- エラー・メッセージが出力されていないか?
- APIからエラーコードが戻されていないか?
- MQメッセージはどこにいるか?
- MQは正常に稼動しているのか?(チャネル、リスナー、MQプロセス等)
などがあります。
確認後、より詳細な情報が必要になる場合もあります。そのためにはトレースや統計情報の取得を求められることがあるかもしれません。
実際に問題を解決するにはいくつかの方法があります。最後の章では方法の選択肢について述べていきます。
また、詳細な内容を調べるためには以下のMQマニュアルをご参照ください。
2 エラーメッセージの確認について
2.1 エラーメッセージの出力先
MQは、そのシステム稼動状況について、メッセージを以下のディレクトリに出力します。
【Windowsの場合】
| wmq_dir\qmgrs\QMGRNAME\errors | キューマネージャー名がわかる場合のエラー | | wmq_dir\qmgrs\@SYSTEM\errors | キューマネージャー名がわからない場合のエラー(V6以降では使いません) | | wmq_dir\errors | V6以降では、wmq_dir\qmgrs\QMGRNAME\errorsに出る以外のすべてのエラー。V6より前では初期段階でのエラー(MQの構成ファイルがない場合など) |
| | wmq_dir : WebSphere MQのインストールディレクトリー | | | QMGRNAME : キューマネージャー名 |
【Unixの場合】
| /var/mqm/qmgrs/QMGRNAME/errors | キューマネージャー名がわかる場合のエラー | | /var/mqm/qmgrs/@SYSTEM/errors | キューマネージャー名がわからない場合のエラー(V6以降では使いません) | | /var/mqm/errors | V6以降では/var/mqm/qmgrs/QMGRNAME/errorsに出る以外のすべてのエラー。V6より前では初期段階でのエラー(MQの構成ファイルがない場合など) |
エラーログファイルは、以下の3つのファイルになります。
AMQERR01.LOG
AMQERR02.LOG
AMQERR03.LOG
それぞれのファイルサイズは、256KBです。最新のメッセージは、AMQERR01.LOGに出力されます。
AMQERR01.LOGのサイズが256KB以上になると、AMQERR02.LOGがAMQERR03.LOGにコピーされ、AMQERR01.LOGは、AMQERR02.LOGにコピーされます。AQMERR03.LOGファイルの内容は破棄されます。

エラー・ログのファイルサイズはiniファイルのスタンザで変更することができます。(V6からの機能)
QMErrorLog:
ErrorLogSize=1048576 #1Mb Error log size
また、環境変数経由でも変更が可能です。
export MQMAXERRORLOGSIZE=1048576
2.2 MQのエラーメッセージの確認
前述のエラーログファイル中のエラーメッセージを確認します。メッセージに関する説明は、WebSphere
MQのマニュアル「メッセージ」を参照します。
メッセージ番号は、以下のようにカテゴリ分けされています。
- AMQ4000 〜 AMQ4999:ユーザー・インターフェース・メッセージ (Windows および Linux システムでの WebSphere MQ)
- AMQ5000 〜 AMQ5999:インストール可能サービス・メッセージ
- AMQ6000 〜 AMQ6999:共通サービス・メッセージ
- AMQ7000 〜 AMQ7999:WebSphere MQ プロダクト・メッセージ
- AMQ8000 〜 AMQ8999:WebSphere MQ 管理メッセージ
- AMQ9000 〜 AMQ9999:リモート・メッセージ
例)
AMQ9999:チャネル・プログラムが異常終了しました。
説明:
チャネル・プログラム 'CHAN1' が異常終了しました。
処置:
障害の原因を判別するために、エラー・ファイルにあるチャネル・プログラム 'CHAN1' の以前の
エラー・メッセージを参照してください。
|
エラーメッセージ中の記述に従って、問題判別とその対応を実施します。
2.3 エラーコードの確認(MQRCコマンド)
前述のエラーメッセージ以外に、MQのAPI(MQCONN/MQOPEN/MQPUT/MQGET等)をCallした時には、APIの戻り値として以下の2つの値が戻ります。
MQCC(完了コード)
MQRC(理由コード)
MQCCは、API呼び出しが成功したかどうかの戻り値です。
| 0 MQCC_OK | 「正常完了」 | 理由コードは常にMQRC_NONEです。 | | 1 MQCC_WARING | 「警告」 | 呼び出しは部分的に完了。 理由コード(MQRC)も返されます。 | | 2 MQCC_FAILED | 「呼び出し失敗」 | 理由コード(MQRC)に詳細が記述されます。 |
MQRC(理由コード)は通常4桁の数値で戻されます。
理由コードや前述したエラーメッセージのコードは、その内容をMQRCコマンドを利用して確認することができます。
【APIの戻り値 理由コードの場合】
例)MQRC=2035のとき
C:\>mqrc 2035
2035 0x000007f3 MQRC_NOT_AUTHORIZED
|
【エラーメッセージの場合】
例)エラーログ中のエラーメッセージAMQ9999の場合
C:\>mqrc AMQ9999
536910233 0x20009999 rrcE_ABNORMAL_CHANNEL_END
MESSAGE:
チャネル・プログラムが異常終了しました。
EXPLANATION:
チャネル・プログラム '<insert one>' が異常終了しました。
ACTION:
障害の原因を判別するために、エラー・ファイルにあるチャネル・プログラム '<insert one>'
の以前のエラー・メッセージを参照してください。
|
2.4 FDCファイル
MQの内部エラー等は、FDCファイルとして詳細に出力されます。
出力ディレクトリは、以下になります。
【Windowsの場合】
| wmq_dir\errors | | | wmq_dir : WebSphere MQのインストールディレクトリー |
【Unixの場合】
ファイル名は、AMQnnnnn.mm.FDCとなります。ここで、
| | nnnnn : エラーを報告するプロセスIDです。
mm : 順序番号であり、通常は0です。 |
一般に、このファイルは、IBMのサポートセンターに送付し、障害解析のために利用されます。
FDCファイル出力例:

2.5 トレース
MQのトレースを取得することができます。
【Windows版、Unix版, Linux版の場合(AIX版はV6より)】
以下のコマンドを使用して、トレースを取得します。
strmqtrc(トレースの開始)
endmqtrc(トレースの停止)
さらに、Unix版およびLinux版では、トレース出力をフォーマットするために、次のコマンドを使用します。
dspmqtrc(フォーマット済みトレース出力)
一般に、トレースファイルは、障害解析のために、IBMサポートセンターからの依頼に応じて取得します。 詳細については8.6章をご覧ください。
注)MQ V6以降から、ファイルのアクセス許可レベルが以下のように変更されておりますのでご注意ください。
- システム・エラー・ログ
V6以降ではmqmのグループ・メンバーしかアップデイトできません。
| ファイル名 | ユーザー | グループ | V6より前のバージョン | V6以降 |
|---|
| パーミッション | パーミッション |
|---|
| /var/mqm/errors | mqm | mqm | drwxrwsrwx | drwxrwsrwx | | /var/mqm/errors/*.LOG | mqm | mqm | -rw-rw-rw- | -rw-rw-r-- |
- キュー・マネジャー・エラー・ログ
V6以降ではmqmのグループ・メンバーしかアクセスできません。
| ファイル名 | ユーザー | グループ | V6より前のバージョン | V6以降 |
|---|
| パーミッション | パーミッション |
|---|
| /var/mqm/qmgrs/QMgr/errors | mqm | mqm | drwxrwsrwx | drwxrws--- | | /var/mqm/qmgrs/QMgr/errors/*.LOG | mqm | mqm | -rw-rw-rw- | -rw-rw---- |
- FDCファイル
V6以降では作成したユーザーしかRead/Writeできず、mqmのグループ・メンバーしかReadできません。
| ファイル名 | ユーザー | グループ | V6より前のバージョン | V6以降 |
|---|
| パーミッション | パーミッション |
|---|
| /var/mqm/errors/*.FDC | Userid | mqm | -rw-rw-rw- | -rw-r----- |
3 チャネルとキューの状況確認
各MQのオブジェクトの状況を確認します。
- MQのメッセージがどこに滞留しているか?
- チャネルは正常に稼動しているかどうか?
- チャネルをメッセージ通過しているか?
などを確認します。
3.1 キューのステータス確認
【GUIを使う場合】 MQエクスプローラーを利用して各キューの状態を確認します。

【コマンドを使う場合】
MQSCコマンドを利用してキューの状況を確認します。
例)キューマネージャーQM1上のローカルキューLQ.QM1の現行メッセージ数(CURDEPTH:CURrent DEPTH)を表示します。
C:\>RUNMQSC QM1
5724-H72 (C) Copyright IBM Corp. 1994, 2008. ALL RIGHTS RESERVED.
キュー・マネージャー QM1 に対して MQSC を始動中です。
DISPLAY QSTATUS(LQ.QM1)
1 : DISPLAY QSTATUS(LQ.QM1)
AMQ8450: キュー状況の詳細を表示します。
QUEUE(LQ.QM1) TYPE(QUEUE)
CURDEPTH(1) IPPROCS(0)
LGETDATE( ) LGETTIME( )
LPUTDATE( ) LPUTTIME( )
MEDIALOG( ) MONQ(OFF)
MSGAGE( ) OPPROCS(0)
QTIME( , ) UNCOM(NO)
END
2 : END
MQSC コマンドを 1 つ読み取りました。
構文エラーがあるコマンドはありません。
有効な MQSC コマンドはすべて処理されました。
C:\>
|
例)キューマネージャーQM1上のローカルキューLQ.QM1をオープンしているアプリケーションを表示します。 (WMQ V5.3より、キューにアクセスしているプログラム名やプロセスIDを表示できるようになりました)
C:\>RUNMQSC QM1
5724-H72 (C) Copyright IBM Corp. 1994, 2008. ALL RIGHTS RESERVED.
キュー・マネージャー QM1 に対して MQSC を始動中です。
DISPLAY QSTATUS(LQ.QM1) TYPE(HANDLE) ALL
1 : DISPLAY QSTATUS(LQ.QM1) TYPE(HANDLE) ALL
AMQ8450: キュー状況の詳細を表示します。
QUEUE(LQ.QM1) TYPE(HANDLE)
APPLTAG(WebSphere MQ\bin\amqsput.exe) APPLTYPE(USER)
BROWSE(NO) CHANNEL( )
CONNAME( ) ASTATE(NONE)
HSTATE(INACTIVE) INPUT(NO)
INQUIRE(NO) OUTPUT(YES)
PID(5056) QMURID(0.0)
SET(NO) TID(1)
URID(XA_FORMATID[00000000] XA_GTRID[] XA_BQUAL[])
URTYPE(QMGR) USERID(AA057018@AA0570180)
END
2 : END
MQSC コマンドを 1 つ読み取りました。
構文エラーがあるコマンドはありません。
有効な MQSC コマンドはすべて処理されました。
C:\>
|
例) キューマネージャーQM1上のローカルキューで、キュー名がLから始まり、かつメッセージが空でないものを表示します。 (WMQ V6より、SQL文のようにWHERE句で条件文をつけることができるようになりました)
C:\>runmqsc QM1
5724-H72 (C) Copyright IBM Corp. 1994, 2008. ALL RIGHTS RESERVED.
キュー・マネージャー QM1 に対して MQSC を始動中です。
DISPLAY QSTATUS(L*) WHERE(CURDEPTH GT 0)
1 : DISPLAY QSTATUS(L*) WHERE(CURDEPTH GT 0)
AMQ8450: キュー状況の詳細を表示します。
QUEUE(LQA.QM1) TYPE(QUEUE)
CURDEPTH(3)
END
2 : END
MQSC コマンドを 1 つ読み取りました。
構文エラーがあるコマンドはありません。
有効な MQSC コマンドはすべて処理されました。
C:\>
|
3.2 チャネルのステータス確認
チャネルが正常に稼動しているかどうか、また、チャネルを通過したメッセージ数を確認します。
【GUIを使う場合】
【コマンドを使う場合】
C:\>runmqsc QM1
5724-H72 (C) Copyright IBM Corp. 1994, 2008. ALL RIGHTS RESERVED.
キュー・マネージャー QM1 に対して MQSC を始動中です。
DISPLAY CHS(QM1.TO.QM2) STATUS MSGS
1 : DISPLAY CHS(QM1.TO.QM2) STATUS MSGS
AMQ8417: チャネル状況の内容を表示します。
CHANNEL(QM1.TO.QM2) CHLTYPE(SDR)
CONNAME(localhost(3415)) CURRENT
MSGS(3) RQMNAME(QM2)
STATUS(RUNNING) SUBSTATE(MQGET)
XMITQ(QM2)
END
2 : END
MQSC コマンドを 1 つ読み取りました。
構文エラーがあるコマンドはありません。
有効な MQSC コマンドはすべて処理されました。
C:\>
|
4 MQプロセスの確認
4.1 MQ関連のシステムプロセスの確認
運用監視とも関連しますが、MQ関連のプロセスが稼動しているかどうか、確認します。
MQ関連のプロセスには、主に以下のものがあります。
なお、環境によっては、すべてのプロセスが起動しているわけではありませんので、正常稼動時のプロセス状態を事前に取得しておくといいでしょう。
【MQ V7】
amqzxma0 実行コントローラー
amqzlaa0 キュー・マネージャー・エージェント
amqzmuc0 クリティカル・サービス (V7)
amqfcxba Pub/Subストリーム (V7)
amqzmur0 再始動可能サービス (V7)
amqzmgr0 外部プロセス (V7)
amqfqpub V6互換Pub/Sub
amqrrmfa リポジトリー・マネージャー
amqzmuf0 Pub/Subユーティリティー
amqzfuma OAM プロセス
runmqchi チャネルイニシエーター
runmqlsr リスナー
amqzdmaa 据え置きメッセージ・プロセッサー
amqrmppa 受信側のチャネル
amqpcsea コマンド・サーバー

Windowsの場合は、Windowsのタスクマネージャーやその他のプロセス監視ツールなどで確認します。
Unixの場合は、psコマンドでその稼動状況を確認します。
例) ps -ef | grep キューマネージャー名
5 よくあるエラー
MQの構成時などに発生するエラーについて紹介します。
5.1 チャネル関連に関して
5.1.1 コード変換エラー
MQのキューマネージャーのCCSID属性が互いに異なる場合に、チャネルが接続できないことがあります。
チャネル開始時に以下のエラーメッセージが、エラーログファイルに出力されます。
AMQ6047: 変換がサポートされていません。
説明:
WebSphere MQ は CCSID 943 のタグ付きストリング・データを CCSID 819 のデ
ータに変換できません。
処置:
「WebSphere MQ アプリケーション・プログラミング・リファレンス」の付録と該当す
るNational Language Support の資料を調べて、CCSID がシステムにサポートさ
れているかどうかを確認してください。
|
この現象は、英語環境上のMQサーバーと日本語環境上のMQサーバーをチャネル接続する場合などに発生します。
<対応>
- 英語のCCSID値に統一する
- デフォルトコードページを設定する(設定方法はシステム管理ガイドに記述)
キューマネージャーのCCSID属性値が英語のものであっても、日本語のMQメッセージのやり取りは可能です。
MQMDのCCSID値を適切に設定しておけば、日本語メッセージのコード変換も可能です。
5.1.2 リスナーが起動していない
リスナーが起動していない状態で、チャネルを開始すると以下のエラーメッセージが表示されます。
AMQ9202: リモート・ホスト'wmqwork (10.0.0.1) (1415)'が利用不能です。後で再試行してください。
説明:
TCP/IPを使用して、ホスト'wmqwork (10.0.0.1) (1415)'への会話を割り振ろうとし
ましたが、成功しませんでした。しかし、エラーは一時的なものであるかもしれな
いので、あとでTCP/IP会話を正常に割り振れる可能性があります。
処置:
あとで接続を再試行してください。失敗が続く場合は、エラー値を記録して、シス
テム管理者に連絡してください。 TCP/IPからのリターン・コードは10061
(X'274D')です。失敗の原因は、このホストが宛先ホストに到達できないためであ
る可能性があります。
また、ホスト'wmqwork (10.0.0.1) (1415)'のリスニング・プログラムが実行されて
いないためである可能性もあります。
この場合は、TCP/IPリスニング・プログラムの始動に関連する操作を実行して、
再試行してください。
|
<対応> リスナーを起動して、チャネルを再度、起動します。
5.1.3 順序番号が一致しない
バージョンアップ等で片側のチャネルを再作成した場合などに、チャネルのメッセージ順序番号が一致せず、チャネル接続エラーになるケースがあります。
AMQ9526: チャネル 'QM1.TO.QM2' のメッセージ順序番号エラーです。
説明:
ローカルおよびリモート・キュー・マネージャーが、次のメッセージの順序番号を許
可しませんでした。順序番号 1 が予期されたときに、順序番号 10 を持つメッセ
ージが送信されました。
処置:
矛盾の原因を判別してください。これは、同期情報が壊れているか、または以前
のバージョンにバックアウトされたことが原因と思われます。状況が解決できな
い場合は、RESET CHANNEL コマンドを使用して、チャネルの終わりの送信時に
手動で順序番号をリセットすることができます。
|
<対応> この場合は、チャネルのリセット(RESET CHANNELコマンド)を行って、順序番号をリセットして、再度チャネルを開始します。
5.1.4. チャネルが未確定状態になる
通信エラーなどが発生してチャネル間での同期がとれずに、チャネル間でメッセージをコミットしていいか、バックアウトしていいかわからない状態です。
AMQ9507 チャネル 'CHAN1' は現在未確定です。
説明: チャネルがホスト 'wmqwork' で未確定であるため、要求された操作が完了
しません。
ユーザーの処置: チャネル状況を調べ、チャネルを再始動させて未確定状況を解
決するか、または RESOLVE CHANNEL コマンドを使用して問題を手動で訂正し
ます。
|
<対応>
それぞれのチャネルステータスを表示して、作業論理単位ID(LUWID)を確認します。
- 未確定側のチャネル
DISPLAY CHSTATUS(name) SAVED CURLUWID
- 受信側のチャネル
DISPLAY CHSTATUS(name) SAVED LSTLUWID
表示されるLUWID値を比較します。
2つのLUWIDが同じである場合、受信側は送信側が未確定であると見なす作業単位をすでにコミットしています。
この場合は送信側で、コミット処理を行います。
RESOLVE CHANNEL(name) ACTION(COMMIT)
2つのLUWIDが異なっている場合、受信側は送信側が未確定であると見なす作業単位をコミットしていません
この場合は送信側では、バックアウト処理を行い、メッセージの再送信処理を行います。
RESOLVE CHANNEL(name) ACTION(BACKOUT)
5.1.5. アクセスできない(クライアント・サーバー接続)
MQクライアント(WindowsNT/2000/XP環境、またはUnix環境)から、クライアント接続する場合に、アクセス権限エラーが発生して接続に失敗する場合があります。
これは、MQクライアント接続時には、MQクライアントアプリケーションを実行しているユーザーIDがMQサーバー側に送信され、そのIDをもとにアクセス権限のチェックが行われるからです。
例)サンプルのMQクライアントプログラムを実行したときのエラー
C:\>amqsputc LQ.MQM MQM
Sample AMQSPUT0 start
MQCONN ended with reason code 2035
C:\>MQRC 2035
2035 0x000007f3 MQRC_NOT_AUTHORIZED
C:\
|
<対応>
- MQサーバー側のサーバー接続チャネルのMCAUSER属性に、サーバー側でMQにアクセスできるユーザーIDを指定する。(ただし、この場合はすべてのMQクライアントが接続できるようになります。別途セキュリティに対する考慮が必要です)
- MQサーバー側に、個別のクライアントのユーザーIDを設定して、適切なアクセス権限を付与する
5.2 MQのAPI関連
5.2.1 オブジェクトが見つからない
MQのオブジェクト(キュー、キューマネージャー、チャネル等)は大文字、小文字を識別します。
プログラムなどで、キュー名、キューマネージャー名を指定する場合は、大文字、小文字に注意してください。
特に、MQSCコマンドのDEFINEでキュー名を指定する場合、明示的に小文字で作成する場合には、' '(シングルクォーテーション)で囲む必要があります。
シングルクォテーションを使用せずに、小文字で指定すると、自動的に大文字に変換されて定義されます。
MQでは、便宜上、オブジェクト名を、大文字に統一することをお勧めします。
例)サンプルプログラムで、キューマネージャーMQM上のローカルキューSampleにアクセスする場合
C:\>amqsput SAMPLE MQM
Sample AMQSPUT0 start
target queue is SAMPLE
MQOPEN ended with reason code 2085 (<-エラー!)
unable to open queue for output
Sample AMQSPUT0 end
C:\>mqrc 2085
2085 0x00000825 MQRC_UNKNOWN_OBJECT_NAME
C:\>amqsput Sample MQM
Sample AMQSPUT0 start
target queue is Sample (<-OK!)
|
5.2.2 キューがOPENできない
共用アクセス不可のキューをすでに他のプログラムがオープンしている。または、他のプログラムが、MQOO_INPUT_EXCLUSIVEオプション指定で排他的にキューをオープンしているような場合は、別のプログラムがそのキューにアクセスしようとしても、MQOPEN時に、MQRC=2042の理由コードが戻り、オープンできません。
前述のQSTASUTコマンド等で、そのキューをオープンしている別のプログラムを確認し、必要に応じて終了します。
例)サンプルプログラムamqsgetで、キューマネージャーMQM上の共用不可のローカルキューLQ.MQMにアクセスする場合
C:\>amqsget LQ.MQM MQM
Sample AMQSGET0 start
MQOPEN ended with reason code 2042
unable to open queue for input
Sample AMQSGET0 end
C:\>mqrc 2042
2042 0x000007fa MQRC_OBJECT_IN_USE
C:\>echo DISPLAY QSTATUS(LQ.MQM) TYPE(HANDLE) ALL | RUNMQSC MQM
5724-B41 (C) Copyright IBM Corp. 1994, 2002. ALL RIGHTS RESERVED.
キュー・マネージャー MQM に対して MQSC を始動中です。
1 : DISPLAY QSTATUS(LQ.MQM) TYPE(HANDLE) ALL
AMQ8450: キュー状況の詳細を表示します。
QUEUE(LQ.MQM) PID(3488)
APPLTAG(D:\amqsgetl.exe) TID(1)
APPLTYPE(USER) CHANNEL()
CONNAME() BROWSE(NO)
INPUT(EXCL) INQUIRE(NO)
OUTPUT(NO) SET(NO)
USERID(mqadmin@wmqwork)
MQSC コマンドを 1 つ読み取りました。
構文エラーがあるコマンドはありません。
有効な MQSC コマンドはすべて処理されました。
C:\>
|
すでに別のプログラム'amqsgetl.exe'がLQ.MQMをオープンしているために、オープンできない。(理由コード2042)
<対応> 対象となるキューをオープンしているアプリケーションの終了後、再度、キューをオープンします。
キュー属性を共用可能にする、あるいは、MQOPEN時のオプションでMQOO_INPUT_EXCLUSIVEを指定しなければ、複数アプリケーションでキューを共用できます。
5.2.3 キューがフル
MQPUTしようとするとキューFullになる。
キューのMAXDEPTH値以上メッセージをPUTしようとするとエラーになります。
例)キューマネージャーMQM上のローカルキューLQ.MQMにメッセージをPUTしようすると、Q_FULLのエラー
D:\>amqsput.exe LQ.MQM MQM < sample.txt
Sample AMQSPUT0 start
target queue is LQ.MQM
MQPUT ended with reason code 2053
Sample AMQSPUT0 end
D:\>mqrc 2053
2053 0x00000805 MQRC_Q_FULL
D:\>echo DISPLAY QL(LQ.MQM) MAXDEPTH CURDEPTH | RUNMQSC MQM
5724-B41 (C) Copyright IBM Corp. 1994, 2002. ALL RIGHTS RESERVED.
キュー・マネージャー MQM に対して MQSC を始動中です。
1 : DISPLAY QL(LQ.MQM) MAXDEPTH CURDEPTH
AMQ8409: キューの内容を表示します。
QUEUE(LQ.MQM) MAXDEPTH(5000)
CURDEPTH(5000)
MQSC コマンドを 1 つ読み取りました。
構文エラーがあるコマンドはありません。
有効な MQSC コマンドはすべて処理されました。
D:\>
|
<対応> ローカルキューLQ.MQMの属性を確認すると、最大メッセージ数(MAXDEPTH属性)5000件に対して、すでに5000件のメッセージが滞留していることがわかります(CURDEPTH属性)。
滞留しているメッセージをMQGETで取り出すか、MAXDEPTH値を大きくすることで対応します。
5.2.4 キューがフル(ディスクフル)
MQメッセージは、キューファイルとして、ローカルファイルシステム上に保持されます。ディスクスペースが不足すると、MAXDEPTH以下のメッセージ数でもエラーになってPUTできません。(パーシスタントメッセージ、ノンパーシスタントメッセージのどちらでも起こりえます)
例)キューマネージャーMQM上のローカルキューLQ.MQMにメッセージをPUTしようすると、Q_SPACE_NOT_AVAILABLEのエラー
C:\>amqsput LQ.MQM MQM < sample10000.txt
Sample AMQSPUTL0 start
target queue is LQ.MQM
MQPUT ended with reason code 2056
Sample AMQSPUTL0 end
C:\>mqrc 2056
2056 0x00000808 MQRC_Q_SPACE_NOT_AVAILABLE
C:\>echo DISPLAY QL(LQ.MQM) MAXDEPTH CURDEPTH | RUNMQSC MQM
5724-B41 (C) Copyright IBM Corp. 1994, 2002. ALL RIGHTS RESERVED.
キュー・マネージャー MQM に対して MQSC を始動中です。
1 : DISPLAY QL(LQ.MQM) MAXDEPTH CURDEPTH
AMQ8409: キューの内容を表示します。
QUEUE(LQ.MQM) MAXDEPTH(500000)
CURDEPTH(27892)
MQSC コマンドを 1 つ読み取りました。
構文エラーがあるコマンドはありません。
有効な MQSC コマンドはすべて処理されました。
C:\>
|
このとき、メッセージをPUTしようとしても、最大メッセージ数(MAXDEPTH属性)500000件に対して、27892件しか保持していません(CURDEPTH属性)。
このときのドライブ空き容量は、24,576 バイトであり、ディスク容量自体が不足しています。
<対応>
ディスク容量を増やすか、MAXDEPTH値を小さくして、少量のメッセージしか滞留しないようにします。
5.2.5 MQのメッセージがTruncateされる
MQに付属しているサンプルプログラム(amqsget)のメッセージのバッファエリアは、100バイトです。それ以上のメッセージ長のメッセージをGETしたい場合には、バッファー領域を増やして、プログラムをリコンパイルすることで対応します。
例)サンプルプログラムamqsgetを用いて、100バイト以上のメッセージをGETしようとした場合
C:\>amqsget LQ.MQM MQM
Sample AMQSGET0 start
MQGET ended with reason code 2080
Sample AMQSGET0 end
C:\>mqrc 2080
2080 0x00000820 MQRC_TRUNCATED_MSG_FAILED
C:\>
|
補足: MQGET時に、MQGMO構造体のOptionsで、"MQGMO_ACCEPT_TRUNCATED_MSG"をしているすると、バッファー長より大きなメッセージの場合、バッファー分を取得し、APIは警告メッセージを出力して、処理自体を完了させることができます。
5.3 セキュリティ関連
5.3.1 MQエクスプローラー等でリモート・キューマネージャーの管理をする場合にセキュリティ・エラーが出る
MQエクスプローラーで、リモート・キューマネージャーの管理をしようとする場合におきやすいエラーです。Windowsで使用しているユーザーIDに対して、リモート側のシステムでそのIDに対し必要なMQのリソースにアクセスできるように設定する必要があります。
AMQ4036
アクセスが許可されていません。 この操作の実行は許可されていません。
説明
キュー・マネージャーのセキュリティー・メカニズムは、この要求に関連したユーザー ID にはオブジェクトへのアクセスが許可されていないことを示しています。
|
補足:ありがちな原因としては、
- リモート側のシステムで、Windowsで使用しているユーザーIDと同じものを定義していない
- 上記のID定義で、正しく定義されていない(大文字小文字の問題が多い)
- 12文字以上のユーザーIDを使用している(オペレーティング・システムによってユーザーIDに使用できる文字数の制限が異なる)
- アクセスするMQリモート・オブジェクトに対して十分なセキュリティ権限を持っていない
などが考えられます。MQはさまざまなプラットフォームをサポートしていますが、MQオブジェクトに対するセキュリティについてはOSのユーザーIDを使用しています。そのため、異なるプラットフォーム間でのセキュリティ設定には、それぞれのプラットフォームのユーザー管理の制限を理解することが必要です。たとえば、ユーザーIDに英語の大文字小文字の区別をつけるプラットフォームもあれば、そうでないプラットフォームもあります。また、設定したユーザーIDがMQオブジェクトにアクセスするのを許可するのに、一番簡単な方法はそのユーザーをmqmグループに追加することですが(リモート・サーバー側で)、セキュリティ上問題がある場合には、個別に必要なアクセス権限をそのIDに対して追加する必要があります。参考: Webcast replay: What is new with the WebSphere MQ Explorer V7
5.4 メッセージ表示
5.4.1 MQメッセージが表示できないと出る
この現象はさまざまな要因で起こりうるものです。メッセージ・カタログがないか、あるいはこわれている、あるいはファイルアクセスができないなどの原因が考えられます。
AMQ6090
WebSphere MQ はエラー・メッセージを表示できませんでした
|
補足:
- 正しく動作している同じバージョン/同じプラットフォームのシステムからamq.catファイルをコピーする
- ファイル・ディスクリプターの数を増やす
等で回避できる場合もありますが、その他の要因で発生している場合も数多くありますのでご注意ください。
5.5 リモート接続関連
5.5.1 ホストからの受信エラー
通信の受信時エラー。TCP/IPの戻りコードが10054あるいは461は接続がリセットされたことを意味します。リセットの要因はいろいろなものが考えられます。(以下の補足をご覧ください。)それらの要因を解消することが必要です。
例
2006/03/24 13:23:22 - Process(1124.4) User(MUSR_MQADMIN) Program(amqrmppa.exe)
AMQ9208: ホスト localhost (127.0.0.1) からの受信時にエラー。
説明:
TCP/IP を介して localhost (127.0.0.1) からデータを受信中にエラーが起こりました
。これは通信の障害が原因である可能性があります。
処置:
TCP/IP (recv) 呼び出しからの戻りコードは 10054 (X'2746') です。これらの値を記録
して、システム管理者に連絡してください。
|
補足:リセットの要因としては、
- アプリケーションが、サーバーがリッスンしていないポートとIPアドレスに対して接続要求を出した
- アプリケーションがデータがまだアプリケーションの受信バッファに存在する状態でソケットをクローズした。リモート側がデータが配信されなかったことを知らせることができるように接続がリセットされた。
- クローズされた接続に対して到着したデータによりリセットがひきおこされた
- アプリケーションがソケットをクローズし、リンガー・ソケット・オプションを0にセットしている。そのためTCP/IPに接続がリンガーしてはならないことを通知される。MQはリンガー・ソケットオプションをコードしていないので、リセットは行わない。
- 接続に対して無効なTCPセグメントが到着した。たとえば、誤ったACKや順序番号はリセットを引きおこす可能性がある
- 接続要求がタイムアウトした。TCPは特定のポートとIPアドレスに接続するのをあきらめて接続をリセットする。
- ファイアーウォールが、パケットがファイアーウォール・ルールとポリシーに準拠しない場合に接続をリセットする場合がある。たとえば発信元と受信先のポートとIPアドレスがファイアーウォールのルールあるいはポリシーに合致していない
- 再送信のタイマーが期限切れになった。TCPはパケットの再送信をあきらめて接続をリセットする。
- ハードウェア・デバイス・エラーによりリセットがひきおこされた
などがあります。
5.5.2 .ホストへの接続がクローズ
/etc/servicesおよび INETD.CONF での設定が誤っている場合に多く発生します。
09/06/15 13:20:00 - Process(455584.1) User(mqm) Program(amqcrsta_nd)
AMQ9209: ホスト 'localhost (127.0.0.1)' への接続がクローズされました。
.
説明:
TCP/IP を通じての 'localhost (127.0.0.1)' からのデータの受信でエラーが発生しま
した。リモート・ホストへの接続は予期せず中止されました。
.
|
補足:UNIXが提供するTCP/IPリスナーを使用する場合にはUnixにおける通信のセットアップを参照して/etc/servicesおよび INETD.CONFを正しく設定してください。(あるいはrunmqlsrコマンドを使用してリスナーをリモート・サーバーで起動します。)
6 トレース、統計、アカウンティング情報の取り方
トレース、統計、アカウンティング情報等、MQのシステムの動作情報を把握したい場合の手法についてご説明します。
6.1 トレース
6.1.1 MQトレースの使用目的
「トレース」は指定されたイベントの発生時に必要なデータを収集して時系列に出力していく問題判別の手法の一つです。MQの場合、すべてのキュー・マネジャーとMQクライアントに対してトレースを指定することができます。MQトレースではWindowsプラットフォーム以外、バイナリー・データとしてトレースが出力されますので、人間が解読できるようにするためには、トレース出力に対して「フォーマット」を行う必要があります。多くの場合、トレース取得はMQの障害が起こった場合にサポート・センターから要請されます。特に障害再現のテスト環境構築が困難な場合や障害を引き起こす要因が不明な場合に「トレース」は非常に有効ですが、その反面システムのパフォーマンスに多大な悪影響を与えるので、十分な注意を払ってトレースを設定しなければなりません。また、必要なトレースが取得できた後ではトレースをオフにしておくのを忘れてはなりません。
6.1.2 MQトレースの取得方法
GUIを使う場合:
MQエクスプローラーを使用して、MQトレースを開始するには、ルートのトップの「IBM WebSphere MQ」を右クリックして、「トレース」を選択します。

トレースの設定画面で、

「開始」ボタンをクリックします。トレースを終了するには「終了」ボタンをクリックします。MQ Explorerではトレースの細かいオプションは指定できません。コンポーネントを選択するためにはコマンド・インターフェースを使います。
コマンドを使う場合:
Windows, Linux, UNIX系のプラットフォームでは、トレースの開始にはstrmqtrcコマンド、トレースの終了にはendmqtrcコマンドを使用します。トレースはOSの機能を利用する場合があるので、z/OS等それ以外のプラットフォームについては、マニュアルを確認するか、8.7のMQの問題解決の方法あれこれをご覧ください。
デフォルトではトレースできるすべての項目についてトレースをとるようになっていますので、トレース・データ量を抑えるためには必要な項目だけを選択してトレースをとってください。
例) キューマネジャーQM1に対し、トレース・コンポーネントをすべて除外し、APIトレースだけをオンにしてトレースを開始します。
strmqtrc -x all -t api -m QM1
|
トレースの終了にはendmqtrcコマンドを使います。
トレースの出力先は明示的に指定したのでなければ、
Windowsの場合
wmq_dir\trace
wmq_dir : WebSphere MQのインストールディレクトリ
Unixの場合
/var/mqm/trace
です。ファイル名はAMQppppp.qq.TRC です。
ppppp : トレース対象のプロセスID
qq : 0から始まる順序番号
6.1.3 MQトレースのフォーマット方法
Windowsプラットフォームではトレースがそのままテキスト・ファイルとして出力されますが、UNIXではバイナリー・ファイルとして出力されます。読める形にするためにはdspmqtrcコマンドでトレース・ファイルをフォーマットする必要があります。
例) 現行ディレクトリーのすべてのトレースファイルをフォーマットします。フォーマットされたファイルはAMQppppp.qq..FMTという名前で出力されます。
6.2 アカウンティング情報と統計情報
6.2.1 アカウンティング情報と統計情報の使用目的
トレースがイベントの発生毎にレコードが生成されるのに対し、アカウンティング情報と会計情報はある一定時間内に発生したイベントに対して情報をまとめて出力します。両方とも、デフォルトの出力間隔は1800秒(30分)です。出力はキューであり、PCF形式のメッセージとしてシステム・キューに出力されます。
| | 出力情報種別 | 出力設定対象1 | 出力設定対象2 | 情報出力先 |
|---|
| アカウンティング情報 | MQIアカウンティング | キュー・マネジャー(ACCTMQI) | アプリのコネクト・オプション(MQCONNX) | SYSTEM.ADMIN.ACCOUNTING.QUEUE |
|---|
| キュー・アカウンティング | キュー・マネジャー(ACCTQ) | キュー(ACCTQ) | | 統計情報 | MQI統計 | キュー・マネジャー(STATMQI) | | SYSTEM.ADMIN.STATISTICS.QUEUE |
|---|
| キュー統計 | キュー・マネジャー(STATQ) | キュー(STATQ) | | チャネル統計 | キュー・マネジャー(STATCHL) | チャネル(STATCHL) |
出力設定対象の()内はMQSCコマンドで指定するパラメーター名です。アプリのコネクト・オプションのみAPI名を示しています。
6.2.2 MQアカウンティング情報と統計情報の取得方法
GUIを使う場合:
MQエクスプローラーを使用して、アカウンティング情報や統計情報の設定を行うには、それぞれの設定対象のプロパティー指定で行います。たとえばキュー・マネジャーのプロパティー画面では、以下のように指定を行うことができます。

コマンドを使う場合:
MQSCコマンドを利用して設定対象のプロパティーを変更します。
例) キューマネジャーQM1のMQIアカウンティングをオンにします。
C:\>runmqsc QM1
5724-H72 (C) Copyright IBM Corp. 1994, 2008. ALL RIGHTS RESERVED.
キュー・マネージャー QM1 に対して MQSC を始動中です。
ALTER QMGR ACCTMQI(ON)
1 : ALTER QMGR ACCTMQI(ON)
AMQ8005: WebSphere MQ キュー・マネージャーが変更されました。
END
2 : END
MQSC コマンドを 1 つ読み取りました。
構文エラーがあるコマンドはありません。
有効な MQSC コマンドはすべて処理されました。
|
6.2.3 MQアカウンティング情報と統計情報の利用方法
アカウンティング情報と統計情報はキューに出力されるため、そのままで見ることはできません。サンプル・プログラムのamqsmonを使用して内容をフォーマットして出力することができます。
例)キューマネジャーQM1についてのアカウンティング情報を出力。メッセージはキューから消さない。
amqsmon -b -m QM1 -t accounting
MonitoringType: MQIAccounting
QueueManager: 'QM1'
IntervalStartDate: '2009-08-01'
IntervalStartTime: '22.43.55'
IntervalEndDate: '2009-08-01'
IntervalEndTime: '22.44.01'
CommandLevel: 700
ConnectionId: x'414d5143514d312020202020202020203d34744a2000a401'
SeqNumber: 0
ApplicationName: 'WebSphere MQ\bin\amqsput.exe'
ApplicationPid: 4856
ApplicationTid: 1
UserId: 'AA057018'
ConnDate: '2009-08-01'
ConnTime: '22.43.55'
DiscDate: '2009-08-01'
DiscTime: '22.44.01'
DiscType: Normal
OpenCount: [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
OpenFailCount: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
CloseCount: [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
CloseFailCount: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
PutCount: [1, 0]
PutFailCount: 0
Put1Count: [0, 0]
Put1FailCount: 0
PutBytes: [5, 0]
GetCount: [0, 0]
GetFailCount: 0
GetBytes: [0, 0]
BrowseCount: [0, 0]
BrowseFailCount: 0
BrowseBytes: [0, 0]
CommitCount: 1
CommitFailCount: 0
BackCount: 0
InqCount: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
InqFailCount: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
SetCount: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
SetFailCount: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
DurableSubscribeCount: [0, 0, 0]
NonDurableSubscribeCount: [0, 0, 0]
SubscribeFailCount: 0
DurableUnsubscribeCount: [0, 0]
NonDurableUnsubscribeCount: [0, 0]
UnsubscribeFailCount: 0
SubRqCount: 0
SubRqFailCount: 0
CbCount: [0, 0, 0, 0]
CbFailCount: 0
CtlCount: [0, 0, 0, 0]
CtlFailCount: 0
StatCount: 0
StatFailCount: 0
PutTopicCount: [0, 0]
PutTopicFailCount: 0
Put1TopicCount: [0, 0]
Put1TopicFailCount: 0
PutTopicBytes: [0, 0]
MonitoringType: QueueAccounting
QueueManager: 'QM1'
IntervalStartDate: '2009-08-01'
IntervalStartTime: '22.43.55'
IntervalEndDate: '2009-08-01'
IntervalEndTime: '22.44.01'
CommandLevel: 700
ConnectionId: x'414d5143514d312020202020202020203d34744a2000a401'
SeqNumber: 0
ApplicationName: 'WebSphere MQ\bin\amqsput.exe'
ApplicationPid: 4856
ApplicationTid: 1
UserId: 'AA057018'
ObjectCount: 1
QueueAccounting: 0
QueueName: 'LQ.QM1'
CreateDate: '2009-08-01'
CreateTime: '06.39.31'
QueueType: Predefined
QueueDefinitionType: Local
OpenCount: 1
OpenDate: '2009-08-01'
OpenTime: '22.43.55'
CloseCount: 1
CloseDate: '2009-08-01'
CloseTime: '22.44.01'
PutCount: [1, 0]
PutFailCount: 0
Put1Count: [0, 0]
Put1FailCount: 0
PutBytes: [5, 0]
PutMinBytes: [5, 0]
PutMaxBytes: [5, 0]
GetCount: [0, 0]
GetFailCount: 0
GetBytes: [0, 0]
GetMinBytes: [0, 0]
GetMaxBytes: [0, 0]
BrowseCount: [0, 0]
BrowseFailCount: 0
BrowseBytes: [0, 0]
BrowseMinBytes: [0, 0]
BrowseMaxBytes: [0, 0]
GeneratedMsgCount: 0
2 Records Processed.
|
例)キューマネジャーQM1についての統計情報を出力。メッセージはキューから消さない。
amqsmon -b -m QM1 -t statistics
MonitoringType: MQIStatistics
QueueManager: 'QM1'
IntervalStartDate: '2009-08-01'
IntervalStartTime: '23.08.47'
IntervalEndDate: '2009-08-01'
IntervalEndTime: '23.12.13'
CommandLevel: 700
ConnCount: 49
ConnFailCount: 0
ConnHighwater: 7
DiscCount: [22, 0, 0]
OpenCount: [0, 1326, 5, 0, 0, 118, 0, 0, 5, 0, 0, 0, 0]
OpenFailCount: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
CloseCount: [0, 1305, 2, 0, 0, 111, 0, 0, 5, 0, 0, 0, 0]
CloseFailCount: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
InqCount: [0, 1328, 1, 0, 0, 210, 0, 0, 5, 0, 0, 0, 0]
InqFailCount: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
SetCount: [0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]
SetFailCount: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
PutCount: [1174, 4]
PutFailCount: 0
Put1Count: [1, 0]
Put1FailCount: 0
PutBytes: [964816, 13476]
GetCount: [1174, 4]
GetBytes: [964712, 13276]
GetFailCount: 5
BrowseCount: [0, 99]
BrowseBytes: [0, 50112]
BrowseFailCount: 20
CommitCount: 30
CommitFailCount: 0
BackCount: 0
ExpiredMsgCount: 0
PurgeCount: 0
DurableSubscribeCount: [2, 0, 1]
NonDurableSubscribeCount: [0, 0, 0]
SubscribeFailCount: 0
DurableUnsubscribeCount: [0, 0]
NonDurableUnsubscribeCount: [0, 0]
UnsubscribeFailCount: 0
SubRqCount: 1
SubRqFailCount: 0
CbCount: [0, 0, 0, 0]
CbFailCount: 0
CtlCount: [0, 0, 0, 0]
CtlFailCount: 0
StatCount: 0
StatFailCount: 0
DurableSubscriptionHighWater: [2, 1, 1, 0]
DurableSubscriptionLowWater: [0, 0, 0, 0]
NonDurableSubscriptionHighWater: [0, 0, 0, 0]
NonDurableSubscriptionLowWater: [0, 0, 0, 0]
PutTopicCount: [0, 0]
PutTopicFailCount: 0
Put1TopicCount: [0, 0]
Put1TopicFailCount: 0
PutTopicBytes: [0, 0]
PublishMsgCount: [0, 0]
PublishMsgBytes: [0, 0]
MonitoringType: QueueStatistics
QueueManager: 'QM1'
IntervalStartDate: '2009-08-01'
IntervalStartTime: '23.08.47'
IntervalEndDate: '2009-08-01'
IntervalEndTime: '23.12.13'
CommandLevel: 700
ObjectCount: 21
QueueStatistics: 0
QueueName: 'SYSTEM.ADMIN.QMGR.EVENT'
CreateDate: '2009-08-01'
CreateTime: '06.31.37'
QueueType: Predefined
QueueDefinitionType: Local
QMinDepth: 0
QMaxDepth: 1
AverageQueueTime: [0, 0]
PutCount: [0, 0]
PutFailCount: 0
Put1Count: [1, 0]
Put1FailCount: 0
PutBytes: [104, 0]
GetCount: [0, 0]
GetBytes: [0, 0]
GetFailCount: 0
BrowseCount: [0, 0]
BrowseBytes: [0, 0]
BrowseFailCount: 0
NonQueuedMsgCount: 0
ExpiredMsgCount: 0
PurgeCount: 0
QueueStatistics: 1
QueueName: 'SYSTEM.CLUSTER.REPOSITORY.QUEUE'
CreateDate: '2009-08-01'
CreateTime: '06.31.38'
QueueType: Predefined
QueueDefinitionType: Local
QMinDepth: 0
QMaxDepth: 1
AverageQueueTime: [0, 441264698]
PutCount: [0, 1]
PutFailCount: 0
Put1Count: [0, 0]
Put1FailCount: 0
PutBytes: [0, 12316]
GetCount: [0, 1]
GetBytes: [0, 12316]
GetFailCount: 0
BrowseCount: [0, 2]
BrowseBytes: [0, 24632]
BrowseFailCount: 3
NonQueuedMsgCount: 0
ExpiredMsgCount: 0
PurgeCount: 0
:
|

 |
7 MQ問題解決の方法あれこれ
MQでの問題解決の方法についてまとめてあります。
7.1 マニュアルやその他関連資料を読む
問題解決に限りませんが、正しい設定や機能の理解を深めるためにもマニュアルは必要です。製品にもドキュメンテーション・パッケージが含まれておりますので、お手持ちのPCに導入して参照することもできますが、外部WebでもMQ V7インフォメーション・センターとしてマニュアルを公開しております。左ナビの先頭にあるWebSpere MQタイトルをクリックすると、MQで提供されているマニュアル一覧が表示されますので、そこから読みたいマニュアルを選択していきます。

また、この「MQ設計虎の巻」の掲載されている、developerWorks JapanのMQコーナーでもいろいろなMQ関連の記事が公開されています。
7.2 サポート・センターに問い合わせる
正規のMQのライセンスをお持ちであり、かつメンテナンス契約(ソフトウェア・サブスクリプション&サポートといいます)がその時点で有効なものをお持ちであるお客様は、MQについてのテクニカルQAや障害に関する問い合わせや報告をIBMのサポート・センターに対して行うことができます。(古いバージョンでは、製品としてのサポートが切れている場合もあるのでご注意ください。)お問い合わせにはサポートIDが必要です。MQの問い合わせ先は、WebSphereブランド製品の窓口になります。
電話での窓口対応は、障害報告かつその緊急度が最高のものでない限り、通常の業務時間内に限られますが、Webでの問い合わせ(現在サービス・リクエストと呼ばれるインターフェースが用意されています)は24時間使用可能です。
7.3 MQ研修に出る
日本アイ・ビー・エム人財ソリューション株式会社でMQの研修コースを用意しています。(有料) MQの設定やプログラミングの基本を一から学習したい場合にお奨めです。
7.4 MQのサポートWebで調べる
7.4.1 MQサポートWeb(US)の検索方法
無料で利用できる問題解決の方法としては、WebでのMQナレッジ・ベースの検索があります。
日本語でのソフトウェア技術検索メニューもありますが、無料で最もMQでの問題解決の可能性の高い方法は、MQの開発元のハーズレー(イギリス)で提供している、MQのサポートWebを検索することです。英語の壁という問題がありますが、世界中から集まってくるMQの障害に対する修正報告や、開発元からのヒント&チップスがここに集められてきますので、一番早く問題が解決する可能性があります。
英語で検索するのに慣れていない方は、まずはMQでのメッセージ番号やバージョン、プラットフォームの名前(RHEL, AIX, HP-UX等)、理由コード、APIや機能の名前(MQGET等)など検索結果を絞り込めるようなキーワードを指定してみましょう。

検索キーワードはブランクを間にはさんで並べるとAND条件で検索してくれます。
検索結果が多すぎる場合には、

Additional Search termsの項目に追加のキーワードを入力するか、Document typeのプルダウンでTroubleshootinを選択して検索ボタンをクリックし結果を絞り込みます。また、最新日付順に並べ替えたいときにはSort results byプルダウンからDate - newest firstを選択します。
ご自分の問題に当てはまる文書をTechnote(技術文書)に見つけた場合、Resolving the problem(問題の解決策)の項目に、問題の回避策や、正しい設定方法が書かれている場合があります。

また、問題に対する修正が既に出ている場合もあります。タイトルの最初に7桁の番号(APAR番号といいます)が書かれているものは問題に対する修正の番号です。Fixes are availableと書いてある場合には、問題に対するFixがFixPackの中に組み込まれていることを示します。FixPackとは開発元が出している障害ご自分のバージョンに対するFixのリンクをクリックすると、そこからダウンロード・サイトにたどり着くことができます。

FixPackのダウンロードサイトなど、サポートサイトの中で、以下のようなIBM IDとパスワードの入力を要求されることがありますが、この登録は無料で行うことができます。registerのリンクをクリックします。

7.4.2 サポートWeb(US)からFixPackの入手
問題を最小にするためにあらかじめ製品を導入する際にその時点で提供されている最新のFixPackを入手するのもサポートWeb経由で可能です。FixPackというのは累積パッチのことで、MQでは四半期に一回程度の周期で新しいFixPackがリリースされます。最初にMQを導入する際、あるいはテスト環境でMQに起因すると思われる障害が発生した場合にはその時点でリリースされている最新のFixPackを適用することをお勧めします。現状で適用を推奨しているFixPackのリストがRecommended fixesという名前でサポートWebに用意されています。
7.4.3 MQ障害時に集めるべきデータ(MustGather)
障害に際して収集する必要のあるデータの内容についてはこの8章で述べていますが、MQの場合プラットフォームが多岐に渡り、UNIXやLinux、Windowsといったプラットフォーム以外のものもあります。プラットフォームのOSの特性によってデータの場所や収集の手段が異なる場合がよくあります。そういった場合に役に立つのがMustGatherです。MustGatherは障害解析に必要なデータ収集のことをいいます。さきほどのサポートWebの検索画面で、MustGatherと入力してください。いろいろなシチュエーションでのMustGatherがリストされます。ただ100以上ありますので、まずはMustGather: Read first for WebSphere MQを見てください。各プラットフォームのいろいろなシチュエーション毎のMustGatherのリンクが用意されています。

MustGatherの中にはトレース取得方法に関するものもあります。トレースはオペレーティング・システムの特性により取得方法や出力先が異なる場合があります。特にWindows,LinuxあるいはUnix以外のプラットフォームの場合にその傾向が顕著です。その場合はMustGather: Directions to start, end and format traceを試してみてください。用意されているリンクには以下のようなものがあります。

MQに関係ある他のコンポーネントのトレースのためのMustGather集もそこに用意されています。

7.5 MQのフォーラムに質問を投げる
試用版のMQでのテストなどでサポート・センターの利用ができない場合などでは、MQのフォーラムを利用することなども考えてみてください。必ず回答が得られるとは限りませんが、いろいろな人の意見を聞くことによって解決の手がかりが得られるかもしれません。
参考文献
著者について  | |  | 常盤 千絵,WebSphereテクニカル・セールス, 日本アイ・ビー・エム株式会社 |
記事の評価
|  |