JMXによるJVM Java 仮想マシン(JVM)の監視と管理

とある機会があって、JMX(Java Management Extensions)を利用したVMの監視と管理についての話を聞いたので、自分向けのメモとして残しておきます。

このJMXJava Community Process(JCP)にて仕様策定が行なわれており、Java Specification Requests(JSR)番号で管理されており、関連するJSRには以下のようなものがあります。

  • JSR-003 Java Management Extensions(JMX) Specification
  • JSR-160 Java Management Extensions(JMX) Remote API 1.0
  • JSR-174 Monitoring and Management Specification for the Java Virtual Machine
  • JSR-255 Java Management Extensions(JMX) Specification, version 2.0

またJMXは、Java EEでは1.3から、Java SEだと5.0から標準で利用できるようになっています。

JMX エージェントを有効にして動作を設定するには、JVM起動時のシステムプロパティを設定する必要があります。以下に一例を示します。

-Dcom.sun.management.jmxremote.port=8080 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false

この例では、JMXリモートエージェントを有効にして、8080ポート経由で待機するためにリモートJMX コネクタを作成し、認証なしでのアクセスを許可しています。

他に設定できるシステムプロパティについては以下を参照して下さい。

この状態で、JMX に準拠した監視ツール、jconsoleを起動するとJavaプラットフォームで実行されるアプリケーションのパフォーマンスとリソース消費に関する情報を提供します。

$ jconsole

詳細については、以下野サイトを参照して下さい。