Ich verwende derzeit jconsole
zur Überwachung der Leistungskennzahlen meiner Java-Anwendung und möchte script this Datenerfassung .
Gibt es eine Möglichkeit, diese VM -Metriken (Speicherauslastung, Anzahl der Threads, CPU-Auslastung usw.) in STDOUT
abzurufen?
Die Daten in top -p PID -b -n 1
schneiden sie nicht ganz ab.
Vielen Dank
jconsole stellt lediglich einen Wrapper für die JMX-MBeans bereit, die sich auf der Plattform MBeanServer befinden.
Sie können ein Programm schreiben, um eine Verbindung zu Ihrem VM mithilfe der Attach API herzustellen, die dann die MBeans abfragen würde.
Oder Sie können die Plattform MBeanServer über RMI verfügbar machen und die MBeans auf diese Weise abfragen.
Weitere Informationen finden Sie im Paket Java.lang.management
Vielleicht ist jvmtop einen Blick wert.
Es ist ein Befehlszeilentool, das eine live-view für mehrere Metriken bereitstellt.
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
Werfen Sie einen Blick auf jmap
, mit dem Sie einen Heap-Dump von der Konsole erstellen können.
Für Daten, die nicht im Heap-Dump enthalten sind, glaube ich, dass Jconsole nur JMX verwendet, um eine Verbindung zur laufenden JVM herzustellen, um Statistiken zu erhalten. Daher ist es wahrscheinlich möglich, eine eigene Anwendung zu erstellen, die dieselben Arten von Statistiken von JMX abruft.
Sie können dieses jmx-Abfrage-Tool über die Befehlszeile verwenden: http://crawler.archive.org/cmdline-jmxclient/
Einige andere nützliche CLI-Tools zum Überwachen von Java-Anwendungen sind:
jvm-mon könnte dafür nützlich sein. Es handelt sich um ein JVM-Überwachungstool für die Befehlszeile, das die folgenden Einstellungen zulässt:
Die Metriken und Diagramme werden aktualisiert, während das Tool geöffnet ist.
jstack bietet in seiner normalen Ausgabe eine Reihe nützlicher Informationsbits. Die Heap-Speichernutzung ist direkt verfügbar, aufgeschlüsselt nach GC-Region. Thread-Anzahl konnte mit etwas Perl/grep/etc. ermittelt werden.
Dies ist eine teilweise Antwort auf Ihre Frage:
set Java_OPTS=%Java_OPTS% -Xloggc:logs\gc.log -XX:+PrintGCDetails -XX:MaxPermSize=128m
Ich habe das Tomcat-jmxproxy erfolgreich für den Zugriff von Skripts verwendet ( http://Tomcat.Apache.org/Tomcat-6.0-doc/manager-howto.html#Using_the_JMX_Proxy_Servlet ).
Ich habe keine davon verwendet, aber eines der jmx-rest-Projekte könnte eine Option für einen Nicht-Tomcat-Server sein ( http://www.google.com/search?q=jmx+rest ).