診断ガイド

     前  次    目次     
コンテンツの開始位置

診断のロードマップ

この章は、Oracle JRockit JVM の問題に取り組む方法を示すロードマップの役割を果たします。基本的には、このロードマップは問題の最善の解決策にたどり着くための 4 つの手順で構成されます。それぞれの手順は以下のとおりです。

 


手順 1. よくある原因の除外

JRockit JVM でアプリケーションを実行中に問題が発生しても、原因がごくありふれたもので、わずかな作業で解決できる場合も少なくありません。JVM の問題を診断する前に、表 25-1 のチェックリストに目を通し、JVM の問題のよくある原因を除外してください。

注意 : このリストは特定の順序に従って並んでいるわけではないので、各項目を個別にチェックすることができます。

表 25-1 JRockit JVM の問題のよくある原因
チェック項目
チェックする理由
JRockit JVM の再インストールを試しましたか
インストールに失敗している可能性がある。JRockit JVM を再インストールし、問題が再現するかどうかを試してみる。関連のあるインストール ガイドについては、「Oracle JRockit Mission Control のインストール 」を参照してください。
JRockit JVM に依存する他のソフトウェアの最新パッチをインストールしたか
JRockit JVM で実行中のアプリケーションが原因で問題が起きている可能性がある。原因が何であれ、その製品の最新リリースでは問題が修正されている場合がある。
JRockit JVM の最新バージョンで問題が再現するか
問題が新しい JRockit JVM リリースで修正されている可能性がある。最新リリースがインストールされているかどうかを確認する。特定の問題が修正されているかどうかを確認するには、『Oracle JRockit JVM リリース ノートを参照。
Oracle とサービス契約を結んでいる場合は、パッチを入手することができる。
同一マシン上で問題を再現できるか
説明されている手順を実行するたびに同じ問題が起きることがわかれば、それは原因を突き止める有力な手がかりとなり、単純なプログラミング エラーの疑いがある。しかし、発生したりしなかったりする場合や、10 回に 1 回または 100 回に 1 回だけ発生する場合は、一般にスレッドのやり取りとタイミングの問題である可能性が高くなる。
別のマシン上で問題を再現できるか
別のマシン上で問題が再現しなければ、それが原因の究明に役立つことがある。たとえばプロセッサの数など、ハードウェアが変わると問題が解消する場合がある。また、オペレーティング システムやアプリケーション ソフトウェアの違いが JRockit JVM に影響を与えることもあります。たとえば、JVM やユーザ Java アプリケーションの競合状態の可視性が、JVM で実行される特定の処理の速度によって影響を受けることがある。
コード ガベージ コレクタを無効にしてみたか
Java ヒープ ガベージ コレクションは無効にできないが、コード ガベージ コレクションは無効にすることができる。コード ガベージ コレクタを無効にすると JRockit JVM のメモリ使用量が増加するが、コード ガベージ コレクションに問題がある場合は、無効にすることで JVM が正常に動作するようになるはずである。コード ガベージ コレクションを無効にするには、起動時にコマンドライン オプション -XXnoCodeGC を使う。
最新のパッチをインストールしたサポート対象のオペレーティング システム (OS) を使用しているか
JRockit JVM をサポートしている OS やディストリビューションを使用し、オペレーティング システムのコンポーネントに最新のパッチを適用することが重要。たとえば、ライブラリをアップグレードすると問題が解決することがある。
最新バージョンのサードパーティ JNI コードを実行しているか
サードパーティ ベンダの JNI コードを実行している場合は、そのコードの最新バージョンをインストールしているか確認する。jrcmd を使用して作成できるテキスト ダンプを調べて (詳細については「jrcmd の使用」を参照)、ロード済みのライブラリ (DLL) のリストを確認する。そのリストから、どの更新プログラムが必要かを調べることができる。
-XnoOpt で最適化を無効にしてみたか
コードの最適化はデフォルトの処理である。この処理では、よく実行されるコードがより効率的に動作するように再コンパイルされる。JRockit JVM はメソッドを最初に実行するときに、そのメソッドをマシン コードにコンパイルする。このコンパイルはすばやく実行されるが、生成されるコードはそれほど効率的ではない。1 度実行するだけで破棄されるメソッドであれば、このコードでも十分だが、何度も使用されるメソッドについては、コードをより効率的な方法で再生成することで、システムのパフォーマンスを高めることができる。JRockit JVM では、コードの効率を最大限に引き出すために、これらのメソッドを再コンパイル、つまり「最適化」する。最適化によってコードの効率は高まるが、コンパイルに時間がかかるようになる。また、オプティマイザ自体にバグがある場合は、-XnoOpt を使用することで、そのバグの問題を識別することができる。
JRockit JVM でクラッシュ ダンプ ファイルを有効にしたか
クラッシュ ダンプ ファイルには、Oracle サポートにとって有用な情報が記録されている。Oracle サポート契約を結んでいる場合は、クラッシュ ダンプ ファイルをサポート代理店に送付すれば、問題を特定しやすくなる。

注意 : Oracle サポート契約を結んでいない場合は、クラッシュ ダンプを有効にしてはならない。ダンプ ファイルはサイズが非常に大きくなるため、大量のディスク領域が無駄に占有されてしまう。

クラッシュ ダンプ ファイルは、Oracle サポートによる問題解決に非常に役立つ。プラットフォームによっては、クラッシュ ダンプ ファイルがデフォルトで有効にならない場合がある。クラッシュ ダンプの詳細については、「クラッシュ ファイルの概要」を参照。

これらの項目をチェックしても問題が解決しない場合は、「手順 2. 現象の観察」に進みます。

 


手順 2. 現象の観察

多くの場合、問題発生時に目にするのはアプリケーションで起きている現象だけです。問題の根底にある原因や、問題の発生源はわかりません。したがって、問題の根本原因よりはむしろ、問題の現象を確かめた後で、実際に問題の解決に取りかかる必要があります。表 25-2 は、JRockit JVM で問題が発生したときにユーザが遭遇する可能性の高い現象を示しています。それぞれの現象の横には、最も可能性の高い問題の原因と、その詳しい対処法の情報が記載されている章へのリンクがあります。

 


手順 3. 問題の特定

現象を確認すると、通常はリンク先の章の関連セクションに記載されている手順に従って問題を特定することができます。たとえば、JVM の起動が容認できないほど遅いという現象が起きているとします。この現象のリンク先の章に記載されている手順に従うと、最適化に問題があるのか、それ以外の原因があるのかを見極めることができます。問題を適切に解決するには、問題の発生源 (および、できればその場所) を知ることがきわめて重要です。

表 25-2 は、JVM の問題に伴って発生する一般的な現象と、その現象に関連する情報が記載されているこのガイド内の章を示しています。

表 25-2 よくある現象とその現象に対応する章
現象
参照先
JVM がクラッシュし、ダンプ情報を作成する
JVM の起動に時間がかかりすぎる
全体のスループットは良好でも、一部のトランザクションの実行に時間がかかりすぎる
全体のスループットが低すぎる
しばらく正常に動作した後、JVM のパフォーマンスが低下し始める。たとえば次のような現象が起きている
  • 全体のスループットが低下する
  • 全体のスループットが安定しない
  • JVM が誤った結果を報告し始める
  • 適切でない場所で JVM が例外を送出する
JVM がクラッシュせずにフリーズしている

 


手順 4. 問題の解決

発生している問題の種類によっては、自力で解決できる場合があります。各現象のリンク先の章 (表 25-2) には、その解決のために必要な手順が示されています。Oracle サポートに処理を依頼しなければならない問題については、現象のリンク先の章に、Oracle サポートに提供する必要がある情報の種類が記載されています。

 


手順 5. トラブル レポートの送付 (省略可能)

JRockit JVM のライセンスを所有するユーザで、独自に問題を解決できない場合は、Oracle のサポート部門にトラブル レポートを送付できます (「Oracle サポートへのトラブル レポートの送付」を参照してください)。


  ページの先頭       前  次