|
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からモニターできるようにする手順を紹介します。
-
クライアント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のバージョンは合わせる必要があります。
-
以下当分、クライアントPCで作業します。
Ver 2.0 or 3.0の展開ディレクトリを適当な位置、例えば
「C:\Wintools\jvmstat」に配置します。
-
環境変数JVMSTAT_JAVA_HOMEに、JDKのホームディレクトリを設定します。
例えば
「C:\Program Files\Java\jdk1.6.0_04」です。
-
環境変数PATHに、javacやjavaがあるディレクトリを追加します。例えば
「C:\Program Files\Java\jdk1.6.0_04\bin」
です。
-
今度はサーバ側での作業です。
監視するサーバーアプリケーションに、"PerfAgent"
と通信するための設定をします。
Sunのjavaで動いているものであれば、javaコマンドの起動オプションに、
「-XX:+UsePerfData」を追加すればokです。
Apache Tomcatならば、startup.shを編集して、環境変数CATALINA_OPTSに
「-XX:+UsePerfData」
に追加すればokです。但し、私が試した環境では、
このオプションを追加しなくても監視できました。
CATALINA_OPTS="-server -Xmx512M -XX:+UsePerfData"
|
-
サーバ側のjvmstatのインストールディレクトリを、
$JVMSTAT_HOME と表記することにします。
.cshrcを編集し、$JVMSTAT_HOME/binをPATHに追加します。
setenv PATH ${PATH}:$HOME/local/jvmstat/bin
|
(csh系のシェルの場合)
-
次にマニュアルにしたがって、以下のように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
|
-
PerfAgentサーバを起動します(&文字は不要)。
-
jvmpsコマンドで、Tomcatが表示されることを確認します。
falcon% jvmps
23642 jvmps.jar
23026 org.apache.catalina.startup.Bootstrap
23632 perfagent.jar
|
-
最後にふたたびクライアント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を控えておきます。
-
「visualgc {上記のID}@{サーバのホスト名}」
で監視ツールのGUIが起動します。例えば上の場合
C:\Wintools\jvmstat-2.0\bat> visualgc 23026@falcon.center.nsnhnkmmkk.co.jp
|
で起動します。
(first uploaded 2009/09/15 last updated 2009/10/26, URANO398)
|