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
- Windows:
- JDK 16以上でJMC eclipseプラグインが起動された場合、ローカルで実行されているJVMの検出に失敗することがあります:
この問題を解決するには、
sun.jvmstat.monitor
をjdk.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を再起動します。ログ・ファイルも同じ場所にあります。