[Linux]

Linux での問題の特性の識別

問題の原因を特定するのに役立つ、いくつかの最初の質問。

本タスクについて

リストの内容を検討しながら、問題と関係がありそうな点をすべてメモしてください。 原因がすぐに判明しない場合でも、体系的な問題判別演習を実行する必要がある場合は、後で役立つ可能性があります。

IBMでケースをオープンする場合、問題の調査に役立つように、収集した追加の IBM MQ トラブルシューティング情報 (MustGather データ) を含めることができます。 詳細については 、「トラブルシューティング情報の収集 」を参照してください。

手順

  1. IBM MQ は以前に正常に実行されたことがありますか?
    IBM MQ が以前に正常に実行されていない場合は、まだ正しくセットアップされていない可能性があります。 詳しくは、 IBM MQ のインストールの概要 および Linux での IBM MQ のインストールおよびアンインストールを参照してください。

    検査手順を実行するには、 Linux での IBM MQ インストールの検査を参照してください。 また、 IBM MQのインストール後の構成については、 IBM MQの構成 を参照してください。

  2. 最後に正しく実行された後、何か変更を加えましたか
    IBM MQ 構成に加えられた変更、または IBM MQ と対話する他のアプリケーションに加えられた変更が、問題の原因である可能性があります。
    最近行われた可能性がある変更を検討する場合は、 IBM MQ システムについて、またそれとインターフェースをとる他のプログラム、ハードウェア、および新規アプリケーションについても考慮してください。 ユーザーが気付いていない新しいアプリケーションがシステムで実行されている可能性についても検討してください。
    • キュー定義を変更、追加、または削除しましたか。
    • チャネル定義を変更または追加しましたか。 IBM MQ チャネル定義、またはアプリケーションが必要とする基礎となる通信定義のいずれかに変更が加えられた可能性があります。
    • アプリケーションは、行った変更の結果、出されるかもしれない戻りコードを取り扱うことができますか。
    • IBM MQの操作に影響を与える可能性があるオペレーティング・システムのコンポーネントを変更しましたか?
  3. 保守更新を適用しましたか
    IBM MQに保守更新を適用した場合は、更新アクションが正常に完了したこと、およびエラー・メッセージが生成されていないことを確認してください。
    • 更新には特別の指示がありましたか。
    • 更新が正しく完全に適用されたことを確認するためのテストが実行されましたか。
    • IBM MQ が以前の保守レベルに復元された場合、問題はまだ存在しますか?
    • インストールが成功した場合は、 IBM サポートにメンテナンス・パッケージのエラーがないか確認してください。
    • メンテナンス・パッケージが他のアプリケーションに適用されている場合は、それが IBM MQ とのインターフェースに与える影響を考慮してください。
  4. アプリケーションは、以前正しく実行されたことがありますか
    問題が 1 つの特定のアプリケーションに関係していると思われる場合は、そのアプリケーションが以前に正常に実行されたことがあるかどうかを検討してください。
    • 最後に正しく実行された後、そのアプリケーションに何か変更が加えられましたか。

      変更が加えられていた場合、そのアプリケーションの新部分または変更部分にエラーがある可能性があります。 変更箇所を見て、明白な問題の原因がないか調べてください。 アプリケーションのバックレベルを使用して再試行できますか。

    • これまでに、 そのアプリケーションのすべての機能が完全に実行されていますか。

      これまで呼び出したことがないアプリケーション部分を初めて使用しているときに、 問題が起こったのではありませんか。 そうである場合、アプリケーションのその部分にエラーがある可能性があります。 問題が発生したとき、アプリケーションが何をしていたのかを調べ、プログラムのその部分のソース・コードにエラーがないか検査してください。 これまでに何度となく実行され、そのたびに正しく動作しているプログラムなら、 エラーが起こったときの現在のキュー状況と、その時処理中だったファイルを調べてください。 プログラムでめったに使用されないパスを呼び出す、一般的でないデータ値がそれらのファイルに含まれている可能性があります。

    • アプリケーションはすべての戻りコードを検査するようになっていますか。

      アプリケーションが変更の結果として受け取る戻りコードを検査しないように、 IBM MQ システムが変更されている (おそらく軽微な方法)。 例えば、アプリケーションは自身がアクセスするキューは共有可能だと想定しているでしょうか。 キューが専用キューに定義変更されたとき、もはやそのキューにはアクセスできないことを伝える戻りコードを、アプリケーションは処理できますか。

    • アプリケーションは他の IBM MQ システムで実行されますか?

      この IBM MQ システムのセットアップ方法に、問題の原因となっている何らかの違いがある可能性がありますか? 例えば、キューは同じメッセージ長または優先順位で定義されていますか。

    コードを調べる前に、コードがどのプログラミング言語で書かれているかに応じて、変換プログラムからの出力、またはコンパイラーとリンケージ・エディターからの出力を調べて、エラーが報告されていないかどうかを確認してください。 アプリケーションの変換、コンパイル、連係編集 (ロード・ライブラリーへの) で問題が起こっていれば、そのアプリケーションを呼び出しても、実行はできません。 アプリケーションのビルドについて詳しくは、 アプリケーションの開発を参照してください。

    出力文書で、各ステップがエラーなしで行われたことが示されている場合は、アプリケーションのコーディング論理を確認してください。 症状から、問題の起きている機能がわかりますか。機能がわかれば、エラーのあるコード部分がわかります。 以下のリストのエラーは、 IBM MQ プログラムの実行中に発生する問題の最も一般的な原因を示しています。 IBM MQ システムの問題の原因が、以下の 1 つ以上のエラーである可能性を考慮してください。
    • キューが実際は専用であるのに、共有可能であると想定した。
    • MQI 呼び出しで間違ったパラメーターを渡している。
    • MQI 呼び出しで不十分なパラメーターを渡している。 これは、アプリケーションが処理する完了コードと理由コードを IBM MQ がセットアップできないことを意味する場合があります。
    • MQI 要求からの戻りコードを検査していない。
    • 引き渡す変数の長さ指定を誤った。
    • 引き渡すパラメーターの順序を誤った。
    • MsgIdCorrelId を正しく初期設定していない。
    • MQRC_TRUNCATED_MSG_ACCEPTED の後の Encoding および CodedCharSetId を初期化していない。
  5. 一部のコマンドの記述テキストで特殊文字を使用すると、エラーが発生しますか?
    一部の文字 (円記号 (¥) や二重引用符 (") など) 文字は、コマンドと一緒に使用すると特殊な意味を持ちます。

    特殊文字の前に \を付けます。つまり、テキスト内で \ または " を使用する場合は、 \\ または \" を入力します。 すべての文字をコマンドで使用できるわけではありません。 特殊な意味を持つ文字とその使用法について詳しくは、 特殊な意味を持つ文字を参照してください。

  6. 問題の場所と原因を判別するのに役立つエラー・メッセージまたは戻りコードがありますか?
    IBM MQ は、エラー・ログを使用して、自身の操作、開始したキュー・マネージャー、および使用中のチャネルからのエラー・データに関するメッセージを収集します。 問題に関連するメッセージが記録されていないかどうか、エラー・ログを確認してください。 エラー・ログの場所と内容については、 AIX、 Linux、および Windows のエラー・ログを参照してください。

    IBM MQ Message Queue Interface (MQI) 呼び出しおよび IBM MQ Administration Interface (MQAI) 呼び出しごとに、呼び出しの成功または失敗を示すために、キュー・マネージャーまたは出口ルーチンによって完了コードと理由コードが戻されます。 アプリケーションへの戻りコードで Message Queue Interface (MQI) 呼び出しが失敗したことが示される場合は、理由コードでその問題についての詳細を確認してください。 理由コードのリストについては、 API 完了コードと理由コードを参照してください。 戻りコードの詳細情報は、各 MQI 呼び出しの説明に記載されています。

  7. 問題を再現できますか
    問題を再現できる場合は、以下のような、問題が再現される条件を考慮してください。
    • 問題は、コマンドまたはそれと同等の管理要求によって引き起こされますか。 別の方法で入力した場合、操作は成功しますか。 コマンド行から入力した場合にはコマンドが作動するが、コマンド行以外からの場合には作動しない場合、コマンド・サーバーが停止していないかどうかを確認してください。また、キュー定義の SYSTEM.ADMIN.COMMAND.QUEUE が変更されていないかどうかも確認してください。
    • 問題はプログラムによって引き起こされますか。 すべての IBM MQ システムおよびすべてのキュー・マネージャーで失敗しますか? それとも一部のみで失敗しますか?
    • 問題が起こるときはいつも実行中だというアプリケーションがありますか。 もしあれば、そのアプリケーションにエラーがないかどうか調べてください。
  8. ネットワークの特定部分にだけ影響する問題ですか
    問題の原因となる可能性のあるネットワーク関連の変更、または IBM MQ 定義の変更を行いましたか?
    問題の影響を受けるネットワークの特定の部分 (例えば、リモート・キュー) を識別できる場合があります。 リモート・メッセージ・キュー・マネージャーへのリンクが作動していない場合、メッセージをリモート・キューに送ることができません。
    • 2 つのシステム間の接続が使用可能であること、および IBM MQ の相互通信コンポーネントが開始されていることを確認してください。
    • メッセージが伝送キューに達していることを確かめ、伝送キューのローカル・キュー定義を調べてください。 リモート・キューがあれば、それも調べてください。
  9. 1 日のうちの特定の時刻に起こる問題ですか
    1 日の特定の時刻に問題が起こる場合は、問題にシステム負荷が関係している可能性があります。 通常、システム負荷のピークは、午前の中ごろと午後の中ごろです。 そのため、この時間帯に負荷による問題が起こる可能性が最も高くなります。

    ご使用の IBM MQ ネットワークが複数のタイム・ゾーンにまたがっている場合は、システム負荷のピーク時が他の時刻になっているように見えることがあります。

  10. 断続的に起こるだけの問題ですか
    断続的な問題は、プロセスが互いに独立して実行される場合があるということが原因となっている可能性があります。 例えば、プログラムは、前のプロセスが完了する前に、待機オプションを指定せずに MQGET 呼び出しを発行することがあります。 キューにメッセージを書き込む呼び出しがコミットされる前に、アプリケーションがキューからメッセージを取得しようとした場合にも、断続的な問題が発生することがあります。