Linux の MustGather 情報
問題が発生した場合、システム環境の状態について分かっている情報が多いほど、問題を診断しやすくなります。
IBM® Support Assistant Data Collector は、問題イベントに関する Java™ 診断ファイルを収集するための推奨ユーティリティーです。 IBM Support Assistant Data Collector は、ダンプやログ・ファイルなどの診断ファイルを収集し、必要に応じて情報を IBMに送信するのに役立ちます。 詳しくは、 診断ツールの使用を参照してください。
以下のセクションでは、Java の IBM サービス・チームが問題を解決するのに役立つように収集できるデータについて説明します。
システム・ダンプの生成
-Xdump:systemコマンド行オプションを使うと、トリガーに基づいてシステム・ダンプを取得できます。 詳しくは、 ダンプ・エージェントの使用 を参照してください。
- ps コマンドを使用して、アプリケーションのプロセス ID を判別します。 ps コマンドを参照してください。
- シェル・プロンプトで、
gcore -o <dump file name> <pid>を入力します。
アプリケーションのシステム・ダンプ・ファイルが生成されます。 システム・ダンプを書き込む間、アプリケーションは中断状態になります。
システム・ダンプ (コア・ファイル) の収集
Javadump の生成
クラッシュなどの場合、Javadump は通常は現行ディレクトリーに生成されます。
- ps コマンドを使用して、アプリケーションのプロセス ID を判別します。 ps コマンドを参照してください。
- シェル・プロンプトで、
kill -QUIT <pid>を入力します。
このプロセスについて詳しくは、 J9 VM リファレンスの Javadump の使用 を参照してください。
Heapdump の生成
JVM は、ユーザーの要求に応じて Heapdump を生成できますが、デフォルトでは OutOfMemoryError が原因で JVM が終了したときに Heapdump が生成されます。ユーザーが Heapdump を要求する方法としては、アプリケーション内から com.ibm.jvm.Dump.HeapDump() を呼び出すことが挙げられます。 -Xdump:heapオプションを使用して、Heapdump のタイミングをより細かく制御できます。 例えば、フル・ガーベッジ・コレクションが特定の回数実行された後に Heapdump を要求できます。 Heapdump のデフォルト・フォーマット (phd ファイル) は人間には読めないため、Heaproots などの利用可能なツールを使用して処理します。 詳しくは、 J9 VM リファレンスの「 Using Heapdumps 」を参照してください。スナップ・トレースの生成
デフォルトの状態では、稼働中の JVM は、特別な循環バッファーに少量のトレース・データを収集します。 このデータは、JVM が予期せず終了した場合、または OutOfMemoryError が発生した場合にファイルにダンプされます。 -Xdump:snapオプションを使用して、スナップ・追跡の生成元であるイベントを変更できます。 スナップ・トレースは、通常のトレース・ファイル・フォーマットになっているため、用意されている標準トレース・フォーマッターを使用して、人間が読めるようにする必要があります。 スナップ・トレースの内容と制御について詳しくは、 スナップ・トレース を参照してください。JIT ダンプの生成
一般保護違反 (GPF) または abort イベントによって、JIT 診断データの小さいバイナリー・ダンプが生成されます。 詳しくは、 JIT ダンプを参照してください。システム・ログの使用
カーネルは、システム・メッセージおよび警告をログに記録します。 システム・ログは、/var/log/messages ファイルにあります。 これを使用して、特定の問題またはイベントの原因となったアクションを監視してください。 システム・ログは、システムの状態を判別する際にも役立ちます。 その他のシステム・ログは、/var/log ディレクトリーにあります。
稼働環境の判別
このセクションでは、プロセスのライフサイクルにおける各ステージでのプロセスの稼働環境を判別する上で役に立つコマンドについて説明します。
- uname -a
- オペレーティング・システムおよびハードウェアに関する情報を表示します。
- df
- システム上の空きディスク・スペースを表示します。
- 空き
- メモリーの使用に関する情報を表示します。
- ps -ef
- プロセスの全リストを表示します。
- lsof
- 開いているファイル・ハンドルを表示します。
- top
- プロセス情報 (プロセッサー、メモリー、状態など) を表示します。デフォルトではプロセッサーの使用量順にソートされています。
- vmstat
- メモリーおよびページングに関する一般情報を表示します。
uname、 df、および free の出力が最も役立ちます。 その他のコマンドは、クラッシュの前後またはハング中に実行して、プロセスの状態を判別することができます。 これらのコマンドを使用して、有用な診断情報を表示できます。
送信、Java サポートへの情報の
前のセクションにリストされているコマンドの出力を収集したら、その出力をファイルに入れます。
ファイルは大きくなる可能性があるため、Java サポートに送信する前にファイルを圧縮してください。 ファイルは非常に高い圧縮率で圧縮してください。
以下のコマンドを実行すると、ファイル {file1,..,fileN} からアーカイブが作成され、それらが filename.tgz という形式の名前を持つファイルに圧縮されます。
tar czf filename.tgz file1 file2...filen追加の診断データの収集
問題の種類に応じて、以下のデータも問題の診断に役立つことがあります。 使用可能な情報は、Java の開始方法とシステム環境によって異なります。 これらのデバッグ・エイドがアクティブでない場合は、構成を変更し、Java を再始動して問題を再現する必要があります。
/procファイル・システム
/procファイル・システムは、カーネル・レベル情報への直接アクセスを提供します。 /proc/<pid>ディレクトリーには、PID (プロセスID)<pid>のプロセスに関する詳細な診断情報が含まれています。ここで、<pid>はプロセスのIDです。
このコマンドcat /proc/<pid>/mapsは、特定のプロセスのメモリー・セグメント (ネイティブ・ヒープを含む)をリストします。
strace および ltrace
さらに詳細な診断データを収集するには、コマンド strace および ltrace を使用します。 トレース・ツールを参照してください。