Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was...

24
Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem [email protected] / @TobiasFrech

Transcript of Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was...

Page 1: Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem Tobias@Frech.info / @TobiasFrech

Klappe auf! Was macht die JVM denn da?

Vortrag am 7.7.2016

auf dem

[email protected] / @TobiasFrech

Page 2: Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem Tobias@Frech.info / @TobiasFrech

© [email protected] 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

Page 3: Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem Tobias@Frech.info / @TobiasFrech

© [email protected] 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

Page 4: Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem Tobias@Frech.info / @TobiasFrech

© [email protected] 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)

Page 5: Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem Tobias@Frech.info / @TobiasFrech

© [email protected] JFS 2016 5

Demo

● Anwendung mit JMeter unter Last setzen und analysieren

Page 6: Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem Tobias@Frech.info / @TobiasFrech

© [email protected] 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/

Page 7: Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem Tobias@Frech.info / @TobiasFrech

© [email protected] 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

Page 8: Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem Tobias@Frech.info / @TobiasFrech

© [email protected] 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

Page 9: Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem Tobias@Frech.info / @TobiasFrech

© [email protected] 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.“

Page 10: Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem Tobias@Frech.info / @TobiasFrech

© [email protected] 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

Page 11: Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem Tobias@Frech.info / @TobiasFrech

© [email protected] 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

Page 12: Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem Tobias@Frech.info / @TobiasFrech

© [email protected] 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

Page 13: Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem Tobias@Frech.info / @TobiasFrech

© [email protected] 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)

Page 14: Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem Tobias@Frech.info / @TobiasFrech

© [email protected] 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

Page 15: Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem Tobias@Frech.info / @TobiasFrech

© [email protected] 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)

Page 16: Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem Tobias@Frech.info / @TobiasFrech

© [email protected] 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

Page 17: Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem Tobias@Frech.info / @TobiasFrech

© [email protected] 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

Page 18: Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem Tobias@Frech.info / @TobiasFrech

© [email protected] 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)

Page 19: Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem Tobias@Frech.info / @TobiasFrech

© [email protected] 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

Page 20: Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem Tobias@Frech.info / @TobiasFrech

© [email protected] 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

Page 21: Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem Tobias@Frech.info / @TobiasFrech

© [email protected] 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

Page 22: Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem Tobias@Frech.info / @TobiasFrech

© [email protected] 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=...

Page 23: Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem Tobias@Frech.info / @TobiasFrech

© [email protected] 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!

Page 24: Klappe auf! Was macht die JVM denn da? › _data › 2016_D3.pdf · 2017-10-05 · Klappe auf! Was macht die JVM denn da? Vortrag am 7.7.2016 auf dem Tobias@Frech.info / @TobiasFrech

© [email protected] JFS 2016 24

Vielen Dank!

● Fragen?