klappe auf! was macht die jvm denn da? › _data › 2016_d3.pdf · 2017-10-05 · klappe auf! was...
Post on 30-Jun-2020
4 Views
Preview:
TRANSCRIPT
Klappe auf! Was macht die JVM denn da?
Vortrag am 7.7.2016
auf dem
Tobias@Frech.info / @TobiasFrech
© Tobias@Frech.info JFS 2016 2
Tobias Frech
Geschäftsführer der Frech IT GmbH
Java-Administration, Betrieb von Java-Anwendungen, Bereitschaft (1st-3rd-Level)Architekturberatung für Performance, Verfügbarkeit und Fehlertoleranz
© Tobias@Frech.info JFS 2016 3
Klappe auf!
By Norbert Schnitzler (Own work) [GFDL (http://www.gnu.org/copyleft/fdl.html) or CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0/)], via Wikimedia Commons
© Tobias@Frech.info JFS 2016 4
Raspberry Pi 3
„Server“-Setup
Browser
JMeter
JVM
PanamaElasticsearch
HTTP
SSHtobi@xps (192.168.0.1)
pi@pi3 (192.168.0.5)
© Tobias@Frech.info JFS 2016 5
Demo
● Anwendung mit JMeter unter Last setzen und analysieren
© Tobias@Frech.info JFS 2016 6
JDK Admin-Tools
Console● jps● jinfo● jstack● jstat● jmap
zukünftig:● jcmd
GUI● jconsole● jvisualvm
https://docs.oracle.com/javase/8/ docs/technotes/tools/
© Tobias@Frech.info JFS 2016 7
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
© Tobias@Frech.info JFS 2016 8
Performance-Troubleshooting
Analyse OS-Ressourcen
CPURAMDisk
Prozesse
CPU-LastGarbage Collection
(GC) Analysejstat, jmap
Ursache: GC?
Threaddump Analyse
jstack, Sampler
nein
ja
nein
Memory-Anpassung,GC-Tuning,
Memory-Analyse(Histogramm,
Dump)
ja
Ursachebekannt?
Hybride Threaddump Analyse
top -H, jstack
nein
Ursache beheben oder
kompensierende Maßnahmen:
externe Systeme, Locks,
ja
© Tobias@Frech.info JFS 2016 9
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.“
© Tobias@Frech.info JFS 2016 10
Performance-Troubleshooting
Analyse OS-Ressourcen
CPURAMDisk
Prozesse
CPU-LastGarbage Collection
(GC) Analysejstat, jmap
Ursache: GC?
Threaddump Analyse
jstack, Sampler
nein
ja
nein
Memory-Anpassung,GC-Tuning,
Memory-Analyse(Histogramm,
Dump)
ja
Ursachebekannt?
Hybride Threaddump Analyse
top -H, jstack
nein
Ursache beheben oder
kompensierende Maßnahmen:
externe Systeme, Locks,
ja
© Tobias@Frech.info JFS 2016 11
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
© Tobias@Frech.info JFS 2016 12
JVM Monitoring – Text basiert
● jstat -option jvmid [Interval] [Wiederholungen]● Options:
● class, compiler, gc, gccapacity, gccause, gcnew, gcnewcapacity, gcold, gcoldcapacity, gcpermcapacity, gcutil, printcompilation
© Tobias@Frech.info JFS 2016 13
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)
© Tobias@Frech.info JFS 2016 14
Performance-Troubleshooting
Analyse OS-Ressourcen
CPURAMDisk
Prozesse
CPU-LastGarbage Collection
(GC) Analysejstat, jmap
Ursache: GC?
Threaddump Analyse
jstack, Sampler
nein
ja
nein
Memory-Anpassung,GC-Tuning,
Memory-Analyse(Histogramm,
Dump)
ja
Ursachebekannt?
Hybride Threaddump Analyse
top -H, jstack
nein
Ursache beheben oder
kompensierende Maßnahmen:
externe Systeme, Locks,
ja
© Tobias@Frech.info JFS 2016 15
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)
© Tobias@Frech.info JFS 2016 16
Performance-Troubleshooting
Analyse OS-Ressourcen
CPURAMDisk
Prozesse
CPU-LastGarbage Collection
(GC) Analysejstat, jmap
Ursache: GC?
Threaddump Analyse
jstack, Sampler
nein
ja
nein
Memory-Anpassung,GC-Tuning,
Memory-Analyse(Histogramm,
Dump)
ja
Ursachebekannt?
Hybride Threaddump Analyse
top -H, jstack
nein
Ursache beheben oder
kompensierende Maßnahmen:
externe Systeme, Locks,
ja
© Tobias@Frech.info JFS 2016 17
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
© Tobias@Frech.info JFS 2016 18
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)
© Tobias@Frech.info JFS 2016 19
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
© Tobias@Frech.info JFS 2016 20
Code Cache und Compilation
Defaults JDK 7 (Update 80)● -TieredCompilation● ReservedCodeCacheSize=50m● +UseCodeCacheFlushing
Defaults JDK 8 (Update 91)● +TieredCompilation● ReservedCodeCacheSize=250m● +UseCodeCacheFlushing
© Tobias@Frech.info JFS 2016 21
Performance-Troubleshooting
Analyse OS-Ressourcen
CPURAMDisk
Prozesse
CPU-LastGarbage Collection
(GC) Analysejstat, jmap
Ursache: GC?
Threaddump Analyse
jstack, Sampler
nein
ja
nein
Memory-Anpassung,GC-Tuning,
Memory-Analyse(Histogramm,
Dump)
ja
Ursachebekannt?
Hybride Threaddump Analyse
top -H, jstack
nein
Ursache beheben oder
kompensierende Maßnahmen:
externe Systeme, Locks,
ja
© Tobias@Frech.info JFS 2016 22
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=...
© Tobias@Frech.info JFS 2016 23
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!
© Tobias@Frech.info JFS 2016 24
Vielen Dank!
● Fragen?
top related