jvmstatによるメモリ監視

Java VMのメモリ状態を監視するツールとして、 Sunから無償で配布されているjvmstatがあります。 テキスト・コマンドラインベースのコマンドが幾つかあるほか、 Visual GCというGUIでグラフ表示をしてくれるツールも含まれています。
また、JavaのRMI機構を利用して、 UNIX等のリモートサーバ上で稼動中のJavaアプリケーションのメモリ状態を、 Windows等の一般PC上のVisualGCでグラフ表示することも可能です。
jvmstatの最新版は3.0で、これは監視されるアプリケーションがJava5以降であることが必須です。 Java1.4.2のアプリケーションの場合は、バージョン2.0を使う必要があります。
また上記のリモート監視を行う場合は、jvmstatはサーバ側、クライアント側の両方に (同じものを)インストールする必要がありますが、 その際に2.0同士、または3.0同士で合わせておく必要があります。
つまり、サーバかクライアントの少なくとも片方がJava1.4.2ならばjvmstat 2.0を、 両方ともJava5以降ならばjvmstat 3.0を使う必要があります。


インストール手順

ここでは、リモートサーバ(UNIX)上で動いているサーバーアプリケーション (例はTomcat)のVM使用状況を、 WindowsのクライアントPCからモニターできるようにする手順を紹介します。

  1. クライアントWindowsPC、サーバUNIXとも、Java5(JDK 1.5)以降が入っている場合 http://java.sun.com/performance/jvmstat/ からver3.0をダウンロードし展開します。
    少なくとも片方がJava 1.4.2 (J2SE SDK 1.4.2_**)の場合、 上のサイト→FAQの中からリンクを探し、ver2.1をダウンロードし展開 (無料ユーザ登録が必要です)します。
    Javaが1.4.1以下の場合は残念ながら対象外です。
    ★jvmstatは、クライアント、サーバ双方にインストールが必要です。 クライアントとサーバのjvmstatのバージョンは合わせる必要があります。
  2. 以下当分、クライアントPCで作業します。
    Ver 2.0 or 3.0の展開ディレクトリを適当な位置、例えば 「C:\Wintools\jvmstat」に配置します。
  3. 環境変数JVMSTAT_JAVA_HOMEに、JDKのホームディレクトリを設定します。 例えば 「C:\Program Files\Java\jdk1.6.0_04」です。
  4. 環境変数PATHに、javacやjavaがあるディレクトリを追加します。例えば 「C:\Program Files\Java\jdk1.6.0_04\bin」 です。
  5. 今度はサーバ側での作業です。
    監視するサーバーアプリケーションに、"PerfAgent" と通信するための設定をします。 Sunのjavaで動いているものであれば、javaコマンドの起動オプションに、 「-XX:+UsePerfData」を追加すればokです。
    Apache Tomcatならば、startup.shを編集して、環境変数CATALINA_OPTSに 「-XX:+UsePerfData」 に追加すればokです。但し、私が試した環境では、 このオプションを追加しなくても監視できました。

    CATALINA_OPTS="-server -Xmx512M -XX:+UsePerfData"
    

  6. サーバ側のjvmstatのインストールディレクトリを、 $JVMSTAT_HOME と表記することにします。
    .cshrcを編集し、$JVMSTAT_HOME/binをPATHに追加します。

    setenv PATH ${PATH}:$HOME/local/jvmstat/bin
    

    (csh系のシェルの場合)
  7. 次にマニュアルにしたがって、以下のようにconfigurepolicyコマンドを使い、 ポリシーファイルを作成します。

    cd $JVMSTAT_HOME/policies
    configurepolicy PerfAgentAll.tmpl PerfAgentAll.policy
    configurepolicy PerfAgentMinimal.tmpl PerfAgentMinimal.policy
    configurepolicy PerfAgentTrustedHost.tmpl PerfAgentTrustedHost.policy
    
    cp PerfAgentMinimal.policy PerfAgent.policy
    

  8. PerfAgentサーバを起動します(&文字は不要)。

    % perfagent
    

  9. jvmpsコマンドで、Tomcatが表示されることを確認します。

    falcon% jvmps
    23642 jvmps.jar
    23026 org.apache.catalina.startup.Bootstrap
    23632 perfagent.jar
    

  10. 最後にふたたびクライアントPCでの作業です。
    jvmpsコマンドで、サーバのPerfAgentと通信して、 監視可能なプロセス一覧が表示されることを確認します。

    C:\Wintools\jvmstat-2.0\bat> jvmps falcon.center.nsnhnkmmkk.co.jp
    23679 perfagent.jar
    23026 org.apache.catalina.startup.Bootstrap
    

    "catalina"が含まれるものがTomcatです。先頭のIDを控えておきます。
  11. 「visualgc {上記のID}@{サーバのホスト名}」 で監視ツールのGUIが起動します。例えば上の場合

    C:\Wintools\jvmstat-2.0\bat> visualgc 23026@falcon.center.nsnhnkmmkk.co.jp
    

    で起動します。

Java kowaza Top

(first uploaded 2009/09/15 last updated 2009/10/26, URANO398)

テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル