私は現在jconsole
を使用して、私のJavaアプリケーションのパフォーマンスメトリックを監視しています。script this data Acquisitionにしたいと思います。
これらのVMメトリック(ヒープメモリ使用量、スレッド数、CPU使用量など)をSTDOUT
に取得する方法はありますか?top -p PID -b -n 1
のデータは完全にはカットされません。
ありがとう
jconsoleは、プラットフォームMBeanServerにあるJMX MBeanのラッパーを提供するだけです。
Attach API を使用してVMに接続し、MBeanを照会するプログラムを作成できます。
または、RMIを介してプラットフォームMBeanServerを公開し、その方法でMBeanを照会できます。
詳細については、 Java.lang.management パッケージを参照してください
多分 jvmtop は一見の価値があります。
これは、いくつかのメトリックのlive-viewを提供するコマンドラインツールです。
JvmTop 0.4.1 AMD64 8 cpus, Linux 2.6.32-27, load avg 0.12
http://code.google.com/p/jvmtop
PID MAIN-CLASS HPCUR HPMAX NHCUR NHMAX CPU GC VM USERNAME #T DL
3370 rapperSimpleApp 165m 455m 109m 176m 0.12% 0.00% S6U37 web 21
11272 ver.resin.Resin [ERROR: Could not attach to VM]
27338 WatchdogManager 11m 28m 23m 130m 0.00% 0.00% S6U37 web 31
19187 m.jvmtop.JvmTop 20m 3544m 13m 130m 0.93% 0.47% S6U37 web 20
16733 artup.Bootstrap 159m 455m 166m 304m 0.12% 0.00% S6U37 web 46
jmap
を見てください。これは、コンソールからヒープダンプを取得するために使用できます。
ヒープダンプに含まれていないデータについては、jconsoleはJMXを使用して実行中のJVMに接続するだけで統計を取得できると考えています。したがって、JMXから同じタイプの統計を取得できる独自のアプリケーションを作成できる可能性があります。
このjmxクエリツールは、コマンドラインで使用できます。 http://crawler.archive.org/cmdline-jmxclient/
jvm-mon がこれに役立つかもしれません。失望するのは、コマンドライン用のJVM監視ツールです。
ツールが開いている間、メトリックとチャートが更新されます。
jstack は、通常の出力で多くの有用な情報を提供します。ヒープメモリの使用量は直接利用でき、GC領域別に分類されます。スレッド数は、Perl/grep /などを少し使用して決定できます。
これはあなたの質問に対する部分的な答えです。
set Java_OPTS=%Java_OPTS% -Xloggc:logs\gc.log -XX:+PrintGCDetails -XX:MaxPermSize=128m
スクリプト( http://Tomcat.Apache.org/Tomcat-6.0-doc/manager-howto.html#Using_the_JMX_Proxy_Servlet )からのアクセスにTomcat jmxproxyを正常に使用しました。
私はそれらのいずれも使用していませんが、jmx-restプロジェクトの1つが非Tomcatサーバーのオプションである可能性があります( http://www.google.com/search?q=jmx+rest =)。