Visual VM, JMX i inni

Transkrypt

Visual VM, JMX i inni
Visual VM, Java Management
eXtension i inne ciekawostki
Adam Dudczak
adudczak (at) gmail.com
Poznań Java User Group
6 października 2008
Plan prezentacji
1 Wprowadzenie do VisualVM
2 VisualVm jako klient JMX
3 Profilowanie aplikacji za pomocą VisualVM
4 Podsumowanie i dodatkowe informacje
Czym jest VisualVM?
Aplikacja w ramach której zintegrowano istniejące narzędzia JDK
jinfo, jmap, jstack, jstat
JConsole
znany z NetBeans profiler
Wszystko to w oprawie stworzone w oparciu o NetBeans
Platform (NetBeans RCP?)
Począwszy od Java update 1.6 07, dostarczane razem z Sun JDK
VisualVM to projekt otwarty (licencja GPLv2)
Funkcje dostępne w VisualVM (1)
Uzyskanie podstawowych informacji o procesach Javy
działających lokalnie i zdalnie
Monitorowanie przebiegu wykonania wątków danej aplikacji
(wykrywanie zakleszczeń)
Możliwość wykonania i zapisania zrzutu aktualnego stanu wątków
(ang. Thread dump)
Zrzut zawartości sterty (ang. Heap dump)
Funkcje dostępne w VisualVM (2)
Możliwość porównania zużycia pamięci i stanu wątków w różnych
stadiach wykonania programu
W pełni funkcjonalny klient JMX
Profiler – umożliwiający badanie utyliacji czasu procesora i
pamięci
Pełna zgodność z API pluginów do JConsole (por. JTop)
Wizualizacja działania Garbage Collectora (Visual GC) i inne
Co ze starszymi wersjami Javy?
Tabele dostępnych funkcji
Aplikacje lokalne
jvmstat
jmx
attach
Dostęp zdalny
1.42
5.0
6.0
7.0
X
X
X1
X
X
X
X
X
X
jvmstat 2
jmx 3
attach
1.42
5.0
6.0
7.0
X
X
X
X
X
X
X
1
Wymaga ustawienia -Dcom.sun.management.jmxremote
2
Na zdalnej maszynie musi działać jstatd
3
Wymaga ustawienia
-Dcom.sun.management.jmxremote.port=numer
JStat vs JMX vs Attach
funkcja
wykrycie działającej aplikacji
monitoring
podgląd wątków
profiler
zrzut wątków
zrzut sterty
wywołanie GC
OOME
Własności systemowe
Argumenty JVM
Main class
jvmstat
jmx
X
X
X
X
X
X
X
X
X
X
X
X
X
attach
X
X
X
X
X
Demo numer 1
O czym my w ogóle mówimy? Jak wygląda VisualVm?
Java Management eXtension (1)
Java Management eXtension w specyfikacji Javy obecne od
wersji 1.5 (Wcześniej niezależne implementacje np. mx4j)
JMX pozwala stworzyć interfejs poprzez który można
administrować, monitorować działanie aplikacji
Komunikacja między klientem JMX a MBeanServer’em może
odbywać się np. poprzez połączenie lokalne, RMI, SSL
Połączenie lokalne jest domyślnie uruchomione dla Javy 1.6 w
przypadku 1.5 trzeba je uaktywnić (com.sun.management.jmxremote)
Java Management eXtension (2)
Podstawową jednostką funkcyjną są MBeans, jest ich kilka
rodzajów: Standard MBeans, Dynamic MBeans i in.
Dostępny jest również mechanizm notyfikacji – poprzez interfejs
klienta usługi JMX jesteśmy informowani o zmianach wybranych
przez nas parametrów
Sporo zmian nadchodzi w JMX 2.0 (JDK 1.7)
Java Management eXtension (3)
Każdy JVM udostępnia cztery podstawowe grupy MBeans:
JImplementation – informacje o implementacji MBeanServer’a
com.sun.management – HotSpotDiagnostic umożliwia
zapamiętanie stanu sterty, wgląd w konfigurację JVM
java.lang – informacje o ładowaniu klas, srodowisku w jakim
działa JVM, zużyciu pamięci
java.util.logging – zarządzanie loggerami
Większość serwerów aplikacyjnych oferuje rozbudowane interfejsy
JMX (np. Tomcat, GlassFish, JBoss, WebSphere)
Dwa słowa o uruchamianiu jstatd
jstatd jest częścią JDK 1.6
Przy próbie uruchomienia jstatd może pojawić się błąd :
Could not create remote object access denied
Problem z polityką wykorzystania tools.jar, co trzeba zrobić:
stworzyć plik tools.policy
(plik w visual-vm-examples.zip:/etc/tools.policy)
uruchomić jstatd: jstatd J-Djava.security.policy=tools.policy
trzeba również pamiętać aby uruchomić ten proces działał z
poziomu tego samego użytkownika co monitorowana aplikacja
Demo numer 2
Przykładowa implementacja MBeana
Podłączanie się do działającego na serwerze kontenera Apache
Tomcat
Trochę JMX’owej magii
Demo numer 3
Monitorowanie lokalnej aplikacji
Porównywanie zużycia pamięci
Zabawy z Thread Dump Analyzerem
Uruchomienie profilera
Dla poprawnego działania profilera w przypadku JDK ¡ 1.6 06 należy
uruchomić aplikacje z parametrem: -Xshare:off. W przeciwnym
wypadku maszyna wirtualna może się nie przeżyć kontaktu z
profilerem.
Przy pierwszym uruchomieniu profiler przeprowadzi kalibracje
wszystkie rzeczy optymalizujące szybkość procesora (np. SpeedStep)
powinny byc wyłączone.
Demo numer 4 - Profiler
Profilowanie zużycia czasu procesora i pamięci
Możliwość zapamiętania wyników profilowania do późniejszego
porównania
Ograniczenie liczby modyfikowanych metod
Ograniczenie częstotliwości próbkowanai alokacji obiektów
Profilowanie aplikacji działających
w śrdowisku produkcyjnym
Znaczny spadek wydajności po uruchomieniu profilera od 60% do
40%
Mimo wykorzystania mechanizmu ograniczania liczby
modyfikowanych metod poprawa wydajności jest niewielka
Podsumowanie
Paru rzeczy jeszcze brakuje + kilka niedoróbek w interfejsie
Cały czas powstają nowe wtyczki
Myślę, że warto się przyjrzeć bliżej!
Czytanki (1)
Strona projektu VisualVM – https://visualvm.dev.java.net
„Using VisualVM to find and resolve performance issue in
Liferay” – http://kanonbra.com/index.php/projects/
performance-testing/18-using-visualvm-on-liferay
„Profiling With VisualVM, Part 2” – http://blogs.sun.com/
nbprofiler/entry/profiling_with_visualvm_part_2
„JDK Tools and Utilities” – http://java.sun.com/javase/
6/docs/technotes/tools/index.html
Czytanki (2)
„Java theory and practice: Instrumenting applications with
JMX” – https://visualvm.dev.java.net
„Monitoring and Management Using JMX” – http://java.
sun.com/j2se/1.5.0/docs/guide/management/agent.html
„Creating a Custom JMX Client” – http://java.sun.com/
docs/books/tutorial/jmx/remote/custom.html
Dziękuje za uwagę
Pytania ?
Adam Dudczak
[email protected]

Podobne dokumenty