9 トラブルシューティングのテクニック

このトピックでは、いくつかの既知の問題とそのトラブルシューティング方法を示します。

JVM

  • JDK Mission ControlでローカルのJVMを見つけられません:

    この問題を解決するには、Windowsプラットフォームの場合、次の点について考察します:

    • JMCクライアントを<JMC_ROOT>\binディレクトリから起動したことを確認します。

    • PATH環境変数にJDK 8 (以降)のシステム・パス(<jdk_installation_path>\bin)を設定します。

    • jmc.exeを開くときに、PATHへのアクセス権限があることを確認します。アクセス権がない場合は、管理者として実行します。

    • EclipseからJMCを実行する場合、Eclipseが(JREではなく)JDK上で実行されていることを確認します。

    • システムのtmpディレクトリにhsperfdata_usernameという名前のディレクトリが存在し、JMCを実行しているユーザーが書込み可能であること、さらにファイル・システムがアクセス制御リスト(ACL)をサポートしていることを確認します。

    ノート:

    LinuxおよびmacOSの構成の詳細は、JDK Mission Control 9のインストール手順を参照してください。
  • JVMに接続できません:
    次を確認します:
    • 正しいプロトコルを使用していますか。

      モニター対象のJVMのバージョンと、JMCアプリケーションを実行しているJVMのバージョンが同じであることを確認してください。

      サービスURLの形式です。

      service:jmx:rmi:///jndi/rmi://<hostname>/jmxrmi

    • 正しいポートが開いていますか。

      RMIを介してJMXを実行するには2つのポートが必要で、ポートの1つは事前に認識されていません。

    • 通信がファイアウォールによってブロックされていますか。

      詳細は、JDK Mission Controlの通信に関する項を参照してください。

  • JVMに接続しようとすると、JVMが不明のIPまたはホスト名との通信を試行しているというスタック・トレースが表示されます:

    RMIではときどき、使用するアドレスを決定する際に問題が生じることがあります。これは、次のいずれかのシナリオの場合に発生します:

    • セキュリティ・マネージャでアクセスの制限があります。

    • マシンがマルチホームであり、RMIが間違ったインタフェースを選択しています。

    • 誤って構成されたhostsファイルが存在しているか、多くの様々なネットワーク関連の構成の問題があります。

      前述のシナリオのいずれも機能しない場合は、java.rmi.server.hostnameシステム・プロパティの設定を試してください。これは、JVMで実行されているアプリケーションに影響を与える可能性があります。

JMCの起動

  • JMCの起動時にクラスが見つからない例外が発生しました:
    この問題を解決するには、次の場所からJMCを起動したことを確認します:
    • Windows: <JMC_ROOT>\bin
    • Linux: <JMC_ROOT>/bin
    • macOS: <JMC_ROOT>/JDK Mission Control.app
  • JDK 16以上でJMC eclipseプラグインが起動された場合、ローカルで実行されているJVMの検出に失敗することがあります:
    この問題を解決するには、sun.jvmstat.monitorjdk.internal.jvmstatからeclipse.iniファイルのAll moduleに追加します。eclipseは、次のコマンドで起動することもできます:
    .\eclipse.exe -vmargs --add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED” 
    --add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED

ベスト・プラクティス

ここでは、問題を回避するために使用できるヒントまたはベスト・プラクティスをいくつか示します:

  • キーストアや電子メールなどのプリファレンス・オプションを設定した後、JMCを再起動して構成を有効にします。
  • ローカルに保持されている構成やデータなどをクリアする場合は、<user-home>/.jmcファイルを削除してJMCを再起動します。ログ・ファイルも同じ場所にあります。