MQDの アプリケーション使用した場合に発生する、トラブルの事例およびその対処について説明します。
アプリケーションが異常終了する。
以下の可能性があります。それぞれアプリケーションを確認/修正して再実行してください。
アプリケーションがマルチスレッド用に作成されていない。その場合アプリケーションの動作は保証できず、突然異常終了する場合があります。
マルチスレッドアンセイフな関数を使用している。OSによってマルチスレッドアンセイフ関数の種類は異なります。マルチスレッドアンセイフな関数を使用すると、アプリケーションの動作に影響を及ぼす場合があります。
Java からJNI経由でMQDのAPIを利用している。MQDはJavaから利用する形態の動作保証をしていません。
アプリケーションによってメモリ破壊が行われている。メモリ破壊がないことを調査してください。
アプリケーションがメモリの開放漏れを起こしている。開放漏れがメモリ空間を圧迫し、最終的にアプリケーションが異常終了する。アプリケーションのメモリリークについて調査してください。
アプリケーションがエラーコード 26 (MQD_ERR_OVERTRAN)、36 (MQD_ERR_PROCESSOVER) で異常終了する。
1MQDシステムで同時に実行できるMQDアプリケーション数の限界に達したまたは、1MQDシステムで同時に実行できるトランザクションの最大に達しました。以下を確認して再実行してください。
起動しているMQDアプリケーションの数が多すぎないか。
実行しているトランザクションの数が多すぎないか。
また、以下のようにMQD-APIを使用すると、本エラーが発生する可能性があります。その場合にはアプリケーションを修正してください。
トランザクションの取り消しを、短い期間に連続して実行する。
メッセージ操作を伴わないトランザクションの開始、終了、取り消しを、短い期間に連続して実行する。
メッセージの存在しないメッセージキューに対する非同期モードでのメッセージの受信、参照、カーソル移動、削除を、短い期間に連続して実行する。
メッセージ参照のみを、短い期間に連続して実行する。
アプリケーションがエラーコード 33 (MQD_ERR_NOMEMORY) で異常終了する。
以下の可能性があります。それぞれについて確認/修正して再実行してください。
メッセージバッファの最大長が不足している。MQD環境作成時の [MQDConfiguration] セクションの MessageBufferMaxSize を見直してください。
1トランザクションで送受信するメッセージ長の合計の最大値を超えた。MQD環境作成時の [Transaction] セクションの Max_Size を見直してください。
ヒープ、実メモリ、スワップ領域が足りない。システム全体のメモリ量を見直してください。
アプリケーションがエラーコード 37 (MQD_ERR_ACCESSDENY) で異常終了する。
MQDの各種資源に対するアクセス権限がありません。以下を確認し、再実行してください。
アプリケーションの実行者が スーパユーザ(管理者権限をもっている)、もしくは、MQD運用操作グループに属しているか。
MQDの各種ファイル資源のアクセス権限が書き換えられていないか。
アプリケーションがエラーコード 52 (MQD_ERR_UNITSUMOVER) で異常終了する。
トランザクションサイズの最大に達しました。以下を確認し、再実行してください。
1ユニットまたは1トランザクションで扱える最大のサイズを超えました。
MQD環境作成時のTransactionセクションの Max_Size を超えるサイズのメッセージを取り扱いました。
アプリケーションがエラーコード 113 (MQD_ERR_QNAME) で異常終了する。
メッセージキュー名が不当です。以下を確認し、再実行してください。
メッセージ送信の際、メッセージヘッダの返信キュー名を使用しない場合にはNULL文字を設定してください。
アプリケーションがエラーコード xx で異常終了する。
マニュアルを参照して異常事象 xx に対する対処を実施したあと、再実行してください。
COBOL言語インタフェースの説明と復帰情報の説明のところではエラーコードを10進の数値で説明しています。C言語インタフェース用includeファイルではマクロ名との関連づけを16進数で記述していますので、注意してください。