29
Klappe auf! Was macht die JVM denn da? Vortrag am 5.10.2016 für die [email protected] / @TobiasFrech JUG Karlsruhe

Klappe auf! Was macht die JVM denn da? [Ger]

Embed Size (px)

Citation preview

Page 1: Klappe auf! Was macht die JVM denn da? [Ger]

Klappe auf! Was macht die JVM denn da?

Vortrag am 5.10.2016

für die

[email protected] / @TobiasFrech

JUG Karlsruhe

Page 2: Klappe auf! Was macht die JVM denn da? [Ger]

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

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

© [email protected] 4

Raspberry Pi 3

„Server“-Setup

Browser

JMeter

JVM

PanamaElasticsearch

HTTP

SSHtobi@xps (192.168.1.2)

pi@pi3 (192.168.1.5)

Page 5: Klappe auf! Was macht die JVM denn da? [Ger]

© [email protected] 5

Demo

● Anwendung mit JMeter unter Last setzen und analysieren

● Beispiele:

● Angela Dorothea MerkelBundeskanzlerin der Bundesrepublik Deutschland

http://pi3:9200/panama/_search?q=officer.name:%22Angela%20Dorothea%20Merkel%22~4&pretty

● Sigmundur David GunnlaugssonVorsitzender der Fortschrittspartei in Island

http://pi3:9200/panama/_search?q=officer.name:%22Sigmundur%20David%20Gunnlaugsson%22~4&pretty

Page 6: Klappe auf! Was macht die JVM denn da? [Ger]

© [email protected] 6

Hurra, wir haben einen Lasttest!

5 10 15 200

5

10

15

20

25

30

35

Clients

Ant

wor

tzei

t

Bitte so nicht!

Page 7: Klappe auf! Was macht die JVM denn da? [Ger]

© [email protected] 7

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

rtze

it

Page 8: Klappe auf! Was macht die JVM denn da? [Ger]

© [email protected] 8

Lasttests praktisch

Pine 64 (AArch 64)

0 2 4 6 8 10 12 140

5.000

10.000

15.000

20.000

25.000

30.000

35.000

40.000

45.000

50.000

0%

50%

100%

150%

200%

250%

300%

350%

400%

450%

500%

Durchsatz/Min

CPU

IdleDu

rch

satz

CP

U &

Id

le

Page 9: Klappe auf! Was macht die JVM denn da? [Ger]

© [email protected] 9

Lasttests praktisch

Raspberry Pi 3

0 2 4 6 8 10 12 140

5.000

10.000

15.000

20.000

25.000

30.000

35.000

40.000

45.000

50.000

0%

50%

100%

150%

200%

250%

300%

350%

400%

450%

500%

Durchsatz/Min

CPU

IdleDu

rch

satz

CP

U &

Id

le

Page 10: Klappe auf! Was macht die JVM denn da? [Ger]

© [email protected] 10

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 11: Klappe auf! Was macht die JVM denn da? [Ger]

© [email protected] 11

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 12: Klappe auf! Was macht die JVM denn da? [Ger]

© [email protected] 12

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 13: Klappe auf! Was macht die JVM denn da? [Ger]

© [email protected] 13

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 14: Klappe auf! Was macht die JVM denn da? [Ger]

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

© [email protected] 15

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 16: Klappe auf! Was macht die JVM denn da? [Ger]

© [email protected] 16

JVM Monitoring – Text basiert

● jstat -option jvmid [Interval] [Wiederholungen]● Options:

● class, compiler, gc, gccapacity, gccause, gcnew, gcnewcapacity, gcold, gcoldcapacity, gcpermcapacity, gcutil, printcompilation

Page 17: Klappe auf! Was macht die JVM denn da? [Ger]

© [email protected] 17

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 18: Klappe auf! Was macht die JVM denn da? [Ger]

© [email protected] 18

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 19: Klappe auf! Was macht die JVM denn da? [Ger]

© [email protected] 19

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 20: Klappe auf! Was macht die JVM denn da? [Ger]

© [email protected] 20

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 21: Klappe auf! Was macht die JVM denn da? [Ger]

© [email protected] 21

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 22: Klappe auf! Was macht die JVM denn da? [Ger]

© [email protected] 22

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 23: Klappe auf! Was macht die JVM denn da? [Ger]

© [email protected] 23

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 24: Klappe auf! Was macht die JVM denn da? [Ger]

© [email protected] 24

Code Cache und Compilation

Defaults JDK 7 (Update 80)● -TieredCompilation● ReservedCodeCacheSize=50m● +UseCodeCacheFlushing

Defaults JDK 8 (Update 91)● +TieredCompilation● ReservedCodeCacheSize=250m● +UseCodeCacheFlushing

Page 25: Klappe auf! Was macht die JVM denn da? [Ger]

© [email protected] 25

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 26: Klappe auf! Was macht die JVM denn da? [Ger]

© [email protected] 26

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 27: Klappe auf! Was macht die JVM denn da? [Ger]

© [email protected] 27

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 29: Klappe auf! Was macht die JVM denn da? [Ger]

© [email protected] 29

Quellen

● Index Panama papers for elastic graph

https://gist.github.com/markharwood/3306f803c727b29ed2622ee181994cb7

● Specially Designated Nationals List - Data Formats (Machine Readable, sdn.csv)

https://www.treasury.gov/resource-center/sanctions/SDN-List/Pages/sdn_data.aspx