java-anwendungen betreiben mit durchblick
TRANSCRIPT
![Page 1: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/1.jpg)
Java-Anwendungen betreiben mit Durchblick
Vortrag am 22.2.2016
bei der
Java User Group Hamburg (JUG HH)
[email protected] / @TobiasFrech
![Page 3: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/3.jpg)
© [email protected] JUG HH - 22. Februar 2016 3
iJUG e.V.
Interessenverbund der Java User Groups e.V.http://www.ijug.eu/
JUG Hannover JUG Hessen JUG Hamburg (HH) JUG Kaiserslautern JUG Karlsruhe JUG Köln JUG Mannheim JUG München JUG Münster JUG Ostfalen JUG Saxony JUG Stuttgart e.V. JUG Switzerland JSUG Lightweight JUG München SOUG e.V. SUG Deutschland e.V.
BED-Con e.V. DOAG e.V. JUG Augsburg JUG Berlin-Brandenburg JUG Bremen JUG Darmstadt JUG Deutschland e.V. JUG Dortmund JUG Erlangen–Nürnberg JUG Euregio Maas-Rhein JUG Görlitz
![Page 5: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/5.jpg)
© [email protected] JUG HH - 22. Februar 2016 5
Agenda
● Vortragsziel / Motivation● Demo-Server Setup● Vorgehen beim Troubleshooting● textbasierte Werkzeuge● GUI: VisualVM● Thema Lasttests
Fragen sind jederzeit sehr erwünscht!
![Page 6: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/6.jpg)
© [email protected] JUG HH - 22. Februar 2016 6
Umfrage
● Server-Administration oder Troubleshooting ?
● Java-Version (5 oder früher, 6, 7, 8?)
![Page 7: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/7.jpg)
© [email protected] JUG HH - 22. Februar 2016 7
Raspberry Pi 2
„Server“-Setup
Browser
JMeter
JBoss/JVM H2
DVDstore
DVD-Store-Anwendung mit Fehlersimulationmit freundlichem Dank an:
http://www.inspectit.eu/
HTTP
SSH
RMI
tobi@fedora (192.168.0.1)
pi@pi (192.168.0.2)
![Page 8: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/8.jpg)
© [email protected] JUG HH - 22. Februar 2016 8
Tools für OS-Ressourcen
● CPU: top● RAM: free● Disk: df, du● Prozesse: ps● Langzeit bzw. nachträglich:
● sar: „Collect, report, or save system activity information.“
![Page 9: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/9.jpg)
© [email protected] JUG HH - 22. Februar 2016 9
JDK Admin-Tools
● Console● jps● jinfo● jstack● jstat● jmap
zukünftig:● jcmd
● GUI● jconsole● jvisualvm
https://docs.oracle.com/javase/8/docs/technotes/tools/
![Page 10: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/10.jpg)
© [email protected] JUG HH - 22. Februar 2016 10
JVM Tools – Monitoring und Mgmt.
● jps: listet die verfügbaren JVMs auf● jinfo: Informationen über Parameter und
JVM-Environment● jstat: Informationen über Classloading,
Kompilierung und Garbage Collection● jstack: Liste aller Threads mit
momentaner Aktivität● jmap: Histogramm und Dump des JVM-
Speichers
![Page 11: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/11.jpg)
© [email protected] JUG HH - 22. Februar 2016 11
JVM Tools - Verfügbarkeit
Tool JDK 5 JDK 6 JDK 7
jps ok ok ok
jinfo kein Windows / Linux Itanium
Windows eingeschränkt
Windows braucht ggf. zusätzliche Config
jstat ok ok ok
jstack kein Windows / Linux Itanium
Windows eingeschränkt
Windows braucht ggf. zusätzliche Config
jmap kein Windows / Linux Itanium
Windows eingeschränkt
Windows braucht ggf. zusätzliche Config
![Page 12: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/12.jpg)
© [email protected] JUG HH - 22. Februar 2016 12
Performance-Troubleshooting
Analyse OS-Ressourcen
CPURAMDisk
Prozesse
CPU-LastGarbage Collection
(GC) Analysejstat, jmap
Ursache: GC?
Threaddump Analysejstack, Sampler
nein
ja
nein
Memory-Anpassung,GC-Tuning,
Memory-Analyse(Histogramm,
Dump)
ja
Ursachebekannt?
Hybride Threaddump Analysetop -H, jstack
nein
Ursache beheben oder
kompensierende Maßnahmen:
externe Systeme, Locks,
ja
![Page 13: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/13.jpg)
© [email protected] JUG HH - 22. Februar 2016 13
Demo
● Anwendung mit JMeter unter Last setzen und analysieren
![Page 14: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/14.jpg)
© [email protected] JUG HH - 22. Februar 2016 14
JVM-Prozesse finden
● jps● listet die lvmid aller für den ausführenden
Benutzer monitorbaren JVMs auf● -l für vollen Package-Namen● -v für JVM-Argumente● -m für Argumente an die main-Methode
● jcmd● wie jps, vereint auch alle Funktionen der
anderen Tools und löst diese mittelfristig ab
![Page 15: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/15.jpg)
© [email protected] JUG HH - 22. Februar 2016 15
JVM Monitoring – Text basiert
● jstat -option jvmid [Interval] [Wiederholungen]
● Options:● class, compiler, gc, gccapacity, gccause,
gcnew, gcnewcapacity, gcold, gcoldcapacity, gcpermcapacity, gcutil, printcompilation
![Page 16: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/16.jpg)
© [email protected] JUG HH - 22. Februar 2016 16
JVM Troubleshooting - Speicher
● Allgemeine statische GC-Informationen:
● jmap -heap jvmid● Histogram der Heap-Objekte erzeugen:
● jmap -histo jvmid● Dump des JVM-Heaps erzeugen:
● jmap -dump:format=b jvmid● erzeugt Heap-Dump in Datei heap.bin● nach heap.hprof umbenennen● diese kann mit „Eclipse Memory Analyzer“ auf
Gründe von Memory Leaks analysiert werden (http://wiki.eclipse.org/index.php/MemoryAnalyzer)
![Page 17: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/17.jpg)
© [email protected] JUG HH - 22. Februar 2016 17
JVM Troubleshooting - Threads
● jstack● listet alle Threads in dem spezifizierten
JVM-Prozess● zu jedem Thread wird der momentane
Callstack ausgegeben● Option -l listet auch Locks und Deadlocks● Option -F (force)
![Page 18: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/18.jpg)
© [email protected] JUG HH - 22. Februar 2016 18
Hybride Threaddump Analyse
● top● Batch-Modus möglich: -b● Anzahl Interationen: -n 1● Threads statt Prozesse anzeigen: -H● Die angezeigte Prozess-ID pro Thread ist auch die
Thread-ID in der JVM
● jstack● Prozess-ID 23679 (dezimal) ist in Hex 5c7f
=> nid=0x5c7f
![Page 19: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/19.jpg)
© [email protected] JUG HH - 22. Februar 2016 19
JVM Environment
● OS Environment (PATH etc.) und JVM Environment (System Properties) sind getrennt
● Werte für das JVM-Environment können durch Programme oder von außen beim Start der JVM mit -Dname=wert gesetzt werden
● jinfo (unter JDK5 nicht für Windows verfügbar)
![Page 20: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/20.jpg)
© [email protected] JUG HH - 22. Februar 2016 20
JVM Flags
● Auswahl verschiedener Implementierung und Ausgaben direkt in der JVM
● Logs zu GC, Compiler, Safe Points, Class Loading …
● Funktionsweise:● -XX:+AktivierteOption● -XX:-DeaktivierteOption● -XX:GroessenEinstellung=200m
● Kontrolle und Vergleich zwischen JVM-Versionen:● java -XX:+PrintFlagsFinal -version
![Page 21: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/21.jpg)
© [email protected] JUG HH - 22. Februar 2016 21
Beispiel: GC Logging
● GC-Logs nicht überschreiben:● -Xloggc:gc.log_`date +%F_%T`
● Für die Menschen unter uns:● -XX:-PrintGCTimeStamps● -XX:+PrintGCDateStamps
● Für die Admins:● -XX:+UseGCLogFileRotation● -XX:GCLogFileSize=, -XX:NumberOfGCLogFiles=
![Page 23: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/23.jpg)
© [email protected] JUG HH - 22. Februar 2016 23
VisualVM - Bezugsquellen
● im JDK (auch OpenJDK) ab 1.6 enthalten● Standalone:
● https://visualvm.dev.java.net/
● Runtime-Voraussetzung:
JDK 1.6+ (JRE reicht nicht!)
![Page 25: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/25.jpg)
© [email protected] JUG HH - 22. Februar 2016 25
JVM Agent aktivieren
● Lokal aktivieren:● JDK 5: -Dcom.sun.management.jmxremote● JDK 6+ : nix, dank Attach API
● remote öffnen:-Dcom.sun.management.jmxremote.port=12345-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false
● bei Problemen RMI-Name setzen:-Djava.rmi.server.hostname=...
![Page 26: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/26.jpg)
© [email protected] JUG HH - 22. Februar 2016 26
JMX nachträglich aktivieren
● jcmd 1234 ManagementAgent.start jmxremote.port=5454 jmxremote.ssl=false jmxremote.authenticate=false
● ManagementAgent.stop
JMX-Agents sollten auf kritischen Systemen niemals ohne SSL und Authentifizierung gestartet sein!
![Page 27: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/27.jpg)
© [email protected] JUG HH - 22. Februar 2016 27
VisualVM - Grundfunktionen
● JVM● CPU● Speicher, Garbage Collection, HeapDump● Threads, ThreadDumps● Profiler● Sampler (seit 1.3)
![Page 28: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/28.jpg)
© [email protected] JUG HH - 22. Februar 2016 28
VisualVM - Interessante Plugins
● VisualGC● MBeans● Sampler● JConsole -> TopThreads● ThreadDumpAnalyzer (TDA)
![Page 29: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/29.jpg)
© [email protected] JUG HH - 22. Februar 2016 29
VisualVM - Snapshots
● halten den momentanen, sonst flüchtigen Zustand fest
● können als Datei zur Analyse transportiert werden
● Application Snapshots● Profiler/Sampler Snapshots
![Page 30: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/30.jpg)
© [email protected] JUG HH - 22. Februar 2016 30
VisualVM - Tipps
● RMI-Name setzen● -Djava.rmi.server.hostname=...
● Sampler kann Bilder speichern● für Sampler:
Sampling-Frequenz einstellbar, beeinflusst Performance und Messauflösung
● Achtung: Profiler-Plugin und Sampler sehen ähnlich aus, produktiv Profiler nicht einsetzen!
![Page 31: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/31.jpg)
© [email protected] JUG HH - 22. Februar 2016 31
Lasttest
● Definition des Lasttest-Ziels sehr wichtig● Skalierbarkeit● Verhalten unter Überlast● Langzeitstabilität
● Monitoring● Diensteigenschaften● OS- und JVM-Ressourcen● Lasttreiber (HTTP-Connector, EJBs, Queues,
Schnittstellen etc.)
![Page 32: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/32.jpg)
© [email protected] JUG HH - 22. Februar 2016 32
Hurra, wir haben einen Lasttest!
5 10 15 200
5
10
15
20
25
30
35
Clients
Ant
wor
tzei
t
![Page 33: Java-Anwendungen betreiben mit Durchblick](https://reader033.vdokument.com/reader033/viewer/2022051300/58830d871a28ab31068b4b31/html5/thumbnails/33.jpg)
© [email protected] JUG HH - 22. Februar 2016 33
Lasttest und Skalierbarkeit
1 2 3 4 5 6 70
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
AntwortzeitDurchsatz
Clients
Dur
chsa
tz
An
two
r tze
it