web-dev-qa-db-ja.com

jconsoleデータはコマンドラインから取得できますか?

私は現在jconsoleを使用して、私のJavaアプリケーションのパフォーマンスメトリックを監視しています。script this data Acquisitionにしたいと思います。

これらのVMメトリック(ヒープメモリ使用量、スレッド数、CPU使用量など)をSTDOUTに取得する方法はありますか?
top -p PID -b -n 1のデータは完全にはカットされません。

ありがとう

31
Jonathan

jconsoleは、プラットフォームMBeanServerにあるJMX MBeanのラッパーを提供するだけです。

Attach API を使用してVMに接続し、MBeanを照会するプログラムを作成できます。

または、RMIを介してプラットフォームMBeanServerを公開し、その方法でMBeanを照会できます。

詳細については、 Java.lang.management パッケージを参照してください

12
Kevin

多分 jvmtop は一見の価値があります。
これは、いくつかのメトリックのlive-viewを提供するコマンドラインツールです。

VM概要モードの出力例:

 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
9
MRalwasser

jmap を見てください。これは、コンソールからヒープダンプを取得するために使用できます。

ヒープダンプに含まれていないデータについては、jconsoleはJMXを使用して実行中のJVMに接続するだけで統計を取得できると考えています。したがって、JMXから同じタイプの統計を取得できる独自のアプリケーションを作成できる可能性があります。

7
matt b

このjmxクエリツールは、コマンドラインで使用できます。 http://crawler.archive.org/cmdline-jmxclient/

7
user2427

Javaアプリケーションを監視する他の便利なCLIツールは次のとおりです。

  • Jmxterm これは、アプリケーションサーバー上のすべてのMBeanへのフルアクセスを提供し、インタラクティブに実行するかどうか、
  • jmxbox これは、TCPソケットを介してのみ接続でき、PIDを使用してローカルプロセスに直接接続することはできません
5
Tonin

jvm-mon がこれに役立つかもしれません。失望するのは、コマンドライン用のJVM監視ツールです。

  • jVMプロセス
  • cPUおよびGCの使用
  • ヒープの使用量とサイズ
  • トップスレッド

ツールが開いている間、メトリックとチャートが更新されます。

サンプル: - jvm-mon

3
Andrejs

jstack は、通常の出力で多くの有用な情報を提供します。ヒープメモリの使用量は直接利用でき、GC領域別に分類されます。スレッド数は、Perl/grep /などを少し使用して決定できます。

2
Sbodd

これはあなたの質問に対する部分的な答えです。

set Java_OPTS=%Java_OPTS% -Xloggc:logs\gc.log -XX:+PrintGCDetails -XX:MaxPermSize=128m 
0
djangofan

スクリプト( 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 =)。

0
llama