SlideShare ist ein Scribd-Unternehmen logo
Klappe auf! Was macht die JVM denn da?
Vortrag am 5.10.2016
für die
Tobias@Frech.info / @TobiasFrech
JUG Karlsruhe
© Tobias@Frech.info 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 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 4
Raspberry Pi 3
„Server“-Setup
Browser
JMeter
JVM
PanamaElasticsearch
HTTP
SSH
tobi@xps (192.168.1.2)
pi@pi3 (192.168.1.5)
© Tobias@Frech.info 5
Demo
●
Anwendung mit JMeter unter Last setzen und analysieren
●
Beispiele:
●
Angela Dorothea Merkel
Bundeskanzlerin der Bundesrepublik Deutschland
http://pi3:9200/panama/_search?q=officer.name:%22Angela%20Dorothea
%20Merkel%22~4&pretty
●
Sigmundur David Gunnlaugsson
Vorsitzender der Fortschrittspartei in Island
http://pi3:9200/panama/_search?q=officer.name:%22Sigmundur%20David
%20Gunnlaugsson%22~4&pretty
© Tobias@Frech.info 6
Hurra, wir haben einen Lasttest!
5 10 15 20
0
5
10
15
20
25
30
35
Clients
Antwortzeit
Bitte
so
nicht!
© Tobias@Frech.info 7
Lasttest und Skalierbarkeit
1 2 3 4 5 6 7
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
Antwortzeit
Durchsatz
Clients
Durchsatz
Antwortzeit
© Tobias@Frech.info 8
Lasttests praktisch
Pine 64 (AArch 64)
0 2 4 6 8 10 12 14
0
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
Idle
Durchsatz
CPU&Idle
© Tobias@Frech.info 9
Lasttests praktisch
Raspberry Pi 3
0 2 4 6 8 10 12 14
0
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
Idle
Durchsatz
CPU&Idle
© Tobias@Frech.info 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/
© Tobias@Frech.info 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
© Tobias@Frech.info 12
Performance-Troubleshooting
Analyse OS-
Ressourcen
CPU
RAM
Disk
Prozesse
CPU-Last
Garbage Collection
(GC) Analyse
jstat, jmap
Ursache:
GC?
Threaddump
Analyse
jstack, Sampler
nein
ja
nein
Memory-
Anpassung,
GC-Tuning,
Memory-Analyse
(Histogramm,
Dump)
ja
Ursache
bekannt?
Hybride Threaddump
Analyse
top -H, jstack
nein
Ursache beheben
oder
kompensierende
Maßnahmen:
externe Systeme,
Locks,
ja
© Tobias@Frech.info 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.“
© Tobias@Frech.info 14
Performance-Troubleshooting
Analyse OS-
Ressourcen
CPU
RAM
Disk
Prozesse
CPU-Last
Garbage Collection
(GC) Analyse
jstat, jmap
Ursache:
GC?
Threaddump
Analyse
jstack, Sampler
nein
ja
nein
Memory-
Anpassung,
GC-Tuning,
Memory-Analyse
(Histogramm,
Dump)
ja
Ursache
bekannt?
Hybride Threaddump
Analyse
top -H, jstack
nein
Ursache beheben
oder
kompensierende
Maßnahmen:
externe Systeme,
Locks,
ja
© Tobias@Frech.info 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
© Tobias@Frech.info 16
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 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)
© Tobias@Frech.info 18
Performance-Troubleshooting
Analyse OS-
Ressourcen
CPU
RAM
Disk
Prozesse
CPU-Last
Garbage Collection
(GC) Analyse
jstat, jmap
Ursache:
GC?
Threaddump
Analyse
jstack, Sampler
nein
ja
nein
Memory-
Anpassung,
GC-Tuning,
Memory-Analyse
(Histogramm,
Dump)
ja
Ursache
bekannt?
Hybride Threaddump
Analyse
top -H, jstack
nein
Ursache beheben
oder
kompensierende
Maßnahmen:
externe Systeme,
Locks,
ja
© Tobias@Frech.info 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)
© Tobias@Frech.info 20
Performance-Troubleshooting
Analyse OS-
Ressourcen
CPU
RAM
Disk
Prozesse
CPU-Last
Garbage Collection
(GC) Analyse
jstat, jmap
Ursache:
GC?
Threaddump
Analyse
jstack, Sampler
nein
ja
nein
Memory-
Anpassung,
GC-Tuning,
Memory-Analyse
(Histogramm,
Dump)
ja
Ursache
bekannt?
Hybride Threaddump
Analyse
top -H, jstack
nein
Ursache beheben
oder
kompensierende
Maßnahmen:
externe Systeme,
Locks,
ja
© Tobias@Frech.info 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
© Tobias@Frech.info 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)
© Tobias@Frech.info 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
© Tobias@Frech.info 24
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 25
Performance-Troubleshooting
Analyse OS-
Ressourcen
CPU
RAM
Disk
Prozesse
CPU-Last
Garbage Collection
(GC) Analyse
jstat, jmap
Ursache:
GC?
Threaddump
Analyse
jstack, Sampler
nein
ja
nein
Memory-
Anpassung,
GC-Tuning,
Memory-Analyse
(Histogramm,
Dump)
ja
Ursache
bekannt?
Hybride Threaddump
Analyse
top -H, jstack
nein
Ursache beheben
oder
kompensierende
Maßnahmen:
externe Systeme,
Locks,
ja
© Tobias@Frech.info 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=...
© Tobias@Frech.info 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!
© Tobias@Frech.info 28
Vielen Dank!
●
Fragen?
Tobias@Frech.info / @TobiasFrech
© Tobias@Frech.info 29
Quellen
●
Index Panama papers for elastic graph
https://gist.github.com/markharwood/3306f80
3c727b29ed2622ee181994cb7
●
Specially Designated Nationals List - Data
Formats (Machine Readable, sdn.csv)
https://www.treasury.gov/resource-
center/sanctions/SDN-List/Pages/sdn_data.aspx

Weitere ähnliche Inhalte

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

Compilers Everywhere
Compilers EverywhereCompilers Everywhere
Compilers Everywhere
berndmueller
 
Apex NRW Meetup 10/2019 - Testing mit utPLSQL v3
Apex NRW Meetup 10/2019 - Testing mit utPLSQL v3Apex NRW Meetup 10/2019 - Testing mit utPLSQL v3
Apex NRW Meetup 10/2019 - Testing mit utPLSQL v3
Samuel Nitsche
 
Maemo 5 Developer Workshop @ Metalab
Maemo 5 Developer Workshop @ MetalabMaemo 5 Developer Workshop @ Metalab
Maemo 5 Developer Workshop @ Metalab
thp4
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
agilemethoden
 
20111006 roadshow-io-performance
20111006 roadshow-io-performance20111006 roadshow-io-performance
20111006 roadshow-io-performanceWerner Fischer
 
Webservice API - Webportale mit Force.com verbinden
Webservice API - Webportale mit Force.com verbindenWebservice API - Webportale mit Force.com verbinden
Webservice API - Webportale mit Force.com verbinden
Aptly GmbH
 
OSMC 2010 | Java Monitoring und Troubleshooting by Rainer Jung
OSMC 2010 | Java Monitoring und Troubleshooting by Rainer JungOSMC 2010 | Java Monitoring und Troubleshooting by Rainer Jung
OSMC 2010 | Java Monitoring und Troubleshooting by Rainer Jung
NETWAYS
 
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
NETWAYS
 
Templates, Code & Tools
Templates, Code & ToolsTemplates, Code & Tools
Templates, Code & Tools
Ulrich Krause
 
Top 10 Internet Trends 2005
Top 10 Internet Trends 2005Top 10 Internet Trends 2005
Top 10 Internet Trends 2005
Jürg Stuker
 
JavaScript Days 2015: Security
JavaScript Days 2015: SecurityJavaScript Days 2015: Security
JavaScript Days 2015: Security
Mayflower GmbH
 
Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Top 10 Internet Trends 2003
Top 10 Internet Trends 2003
Jürg Stuker
 
NetBeans für PHP-Entwickler
NetBeans für PHP-EntwicklerNetBeans für PHP-Entwickler
NetBeans für PHP-Entwickler
Ingo Reinhart
 
Monitoring und Profiling von Java-Anwendungen
Monitoring und Profiling von Java-AnwendungenMonitoring und Profiling von Java-Anwendungen
Monitoring und Profiling von Java-Anwendungen
gedoplan
 
node.js Einführung
node.js Einführungnode.js Einführung
node.js Einführung
Benjamin-Timm Broich
 
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GISGeoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Peter Löwe
 
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Gregor Biswanger
 
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyond
Ulrich Krause
 
OSDC 2011 | FAI - Fully Automatic Installation by Thomas Lange
OSDC 2011 | FAI - Fully Automatic Installation by Thomas LangeOSDC 2011 | FAI - Fully Automatic Installation by Thomas Lange
OSDC 2011 | FAI - Fully Automatic Installation by Thomas Lange
NETWAYS
 
XPages - The Basics
XPages - The BasicsXPages - The Basics
XPages - The Basics
Ulrich Krause
 

Ähnlich wie Klappe auf! Was macht die JVM denn da? [Ger] (20)

Compilers Everywhere
Compilers EverywhereCompilers Everywhere
Compilers Everywhere
 
Apex NRW Meetup 10/2019 - Testing mit utPLSQL v3
Apex NRW Meetup 10/2019 - Testing mit utPLSQL v3Apex NRW Meetup 10/2019 - Testing mit utPLSQL v3
Apex NRW Meetup 10/2019 - Testing mit utPLSQL v3
 
Maemo 5 Developer Workshop @ Metalab
Maemo 5 Developer Workshop @ MetalabMaemo 5 Developer Workshop @ Metalab
Maemo 5 Developer Workshop @ Metalab
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
 
20111006 roadshow-io-performance
20111006 roadshow-io-performance20111006 roadshow-io-performance
20111006 roadshow-io-performance
 
Webservice API - Webportale mit Force.com verbinden
Webservice API - Webportale mit Force.com verbindenWebservice API - Webportale mit Force.com verbinden
Webservice API - Webportale mit Force.com verbinden
 
OSMC 2010 | Java Monitoring und Troubleshooting by Rainer Jung
OSMC 2010 | Java Monitoring und Troubleshooting by Rainer JungOSMC 2010 | Java Monitoring und Troubleshooting by Rainer Jung
OSMC 2010 | Java Monitoring und Troubleshooting by Rainer Jung
 
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
 
Templates, Code & Tools
Templates, Code & ToolsTemplates, Code & Tools
Templates, Code & Tools
 
Top 10 Internet Trends 2005
Top 10 Internet Trends 2005Top 10 Internet Trends 2005
Top 10 Internet Trends 2005
 
JavaScript Days 2015: Security
JavaScript Days 2015: SecurityJavaScript Days 2015: Security
JavaScript Days 2015: Security
 
Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Top 10 Internet Trends 2003
Top 10 Internet Trends 2003
 
NetBeans für PHP-Entwickler
NetBeans für PHP-EntwicklerNetBeans für PHP-Entwickler
NetBeans für PHP-Entwickler
 
Monitoring und Profiling von Java-Anwendungen
Monitoring und Profiling von Java-AnwendungenMonitoring und Profiling von Java-Anwendungen
Monitoring und Profiling von Java-Anwendungen
 
node.js Einführung
node.js Einführungnode.js Einführung
node.js Einführung
 
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GISGeoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
Geoinformatik-Kolloquium Juni 2012: High Performance Computing Cluster GIS
 
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
 
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyond
 
OSDC 2011 | FAI - Fully Automatic Installation by Thomas Lange
OSDC 2011 | FAI - Fully Automatic Installation by Thomas LangeOSDC 2011 | FAI - Fully Automatic Installation by Thomas Lange
OSDC 2011 | FAI - Fully Automatic Installation by Thomas Lange
 
XPages - The Basics
XPages - The BasicsXPages - The Basics
XPages - The Basics
 

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

  • 1. Klappe auf! Was macht die JVM denn da? Vortrag am 5.10.2016 für die Tobias@Frech.info / @TobiasFrech JUG Karlsruhe
  • 2. © Tobias@Frech.info 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
  • 3. © Tobias@Frech.info 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
  • 4. © Tobias@Frech.info 4 Raspberry Pi 3 „Server“-Setup Browser JMeter JVM PanamaElasticsearch HTTP SSH tobi@xps (192.168.1.2) pi@pi3 (192.168.1.5)
  • 5. © Tobias@Frech.info 5 Demo ● Anwendung mit JMeter unter Last setzen und analysieren ● Beispiele: ● Angela Dorothea Merkel Bundeskanzlerin der Bundesrepublik Deutschland http://pi3:9200/panama/_search?q=officer.name:%22Angela%20Dorothea %20Merkel%22~4&pretty ● Sigmundur David Gunnlaugsson Vorsitzender der Fortschrittspartei in Island http://pi3:9200/panama/_search?q=officer.name:%22Sigmundur%20David %20Gunnlaugsson%22~4&pretty
  • 6. © Tobias@Frech.info 6 Hurra, wir haben einen Lasttest! 5 10 15 20 0 5 10 15 20 25 30 35 Clients Antwortzeit Bitte so nicht!
  • 7. © Tobias@Frech.info 7 Lasttest und Skalierbarkeit 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 Antwortzeit Durchsatz Clients Durchsatz Antwortzeit
  • 8. © Tobias@Frech.info 8 Lasttests praktisch Pine 64 (AArch 64) 0 2 4 6 8 10 12 14 0 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 Idle Durchsatz CPU&Idle
  • 9. © Tobias@Frech.info 9 Lasttests praktisch Raspberry Pi 3 0 2 4 6 8 10 12 14 0 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 Idle Durchsatz CPU&Idle
  • 10. © Tobias@Frech.info 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/
  • 11. © Tobias@Frech.info 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
  • 12. © Tobias@Frech.info 12 Performance-Troubleshooting Analyse OS- Ressourcen CPU RAM Disk Prozesse CPU-Last Garbage Collection (GC) Analyse jstat, jmap Ursache: GC? Threaddump Analyse jstack, Sampler nein ja nein Memory- Anpassung, GC-Tuning, Memory-Analyse (Histogramm, Dump) ja Ursache bekannt? Hybride Threaddump Analyse top -H, jstack nein Ursache beheben oder kompensierende Maßnahmen: externe Systeme, Locks, ja
  • 13. © Tobias@Frech.info 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.“
  • 14. © Tobias@Frech.info 14 Performance-Troubleshooting Analyse OS- Ressourcen CPU RAM Disk Prozesse CPU-Last Garbage Collection (GC) Analyse jstat, jmap Ursache: GC? Threaddump Analyse jstack, Sampler nein ja nein Memory- Anpassung, GC-Tuning, Memory-Analyse (Histogramm, Dump) ja Ursache bekannt? Hybride Threaddump Analyse top -H, jstack nein Ursache beheben oder kompensierende Maßnahmen: externe Systeme, Locks, ja
  • 15. © Tobias@Frech.info 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
  • 16. © Tobias@Frech.info 16 JVM Monitoring – Text basiert ● jstat -option jvmid [Interval] [Wiederholungen] ● Options: ● class, compiler, gc, gccapacity, gccause, gcnew, gcnewcapacity, gcold, gcoldcapacity, gcpermcapacity, gcutil, printcompilation
  • 17. © Tobias@Frech.info 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)
  • 18. © Tobias@Frech.info 18 Performance-Troubleshooting Analyse OS- Ressourcen CPU RAM Disk Prozesse CPU-Last Garbage Collection (GC) Analyse jstat, jmap Ursache: GC? Threaddump Analyse jstack, Sampler nein ja nein Memory- Anpassung, GC-Tuning, Memory-Analyse (Histogramm, Dump) ja Ursache bekannt? Hybride Threaddump Analyse top -H, jstack nein Ursache beheben oder kompensierende Maßnahmen: externe Systeme, Locks, ja
  • 19. © Tobias@Frech.info 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)
  • 20. © Tobias@Frech.info 20 Performance-Troubleshooting Analyse OS- Ressourcen CPU RAM Disk Prozesse CPU-Last Garbage Collection (GC) Analyse jstat, jmap Ursache: GC? Threaddump Analyse jstack, Sampler nein ja nein Memory- Anpassung, GC-Tuning, Memory-Analyse (Histogramm, Dump) ja Ursache bekannt? Hybride Threaddump Analyse top -H, jstack nein Ursache beheben oder kompensierende Maßnahmen: externe Systeme, Locks, ja
  • 21. © Tobias@Frech.info 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
  • 22. © Tobias@Frech.info 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)
  • 23. © Tobias@Frech.info 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
  • 24. © Tobias@Frech.info 24 Code Cache und Compilation Defaults JDK 7 (Update 80) ● -TieredCompilation ● ReservedCodeCacheSize=50m ● +UseCodeCacheFlushing Defaults JDK 8 (Update 91) ● +TieredCompilation ● ReservedCodeCacheSize=250m ● +UseCodeCacheFlushing
  • 25. © Tobias@Frech.info 25 Performance-Troubleshooting Analyse OS- Ressourcen CPU RAM Disk Prozesse CPU-Last Garbage Collection (GC) Analyse jstat, jmap Ursache: GC? Threaddump Analyse jstack, Sampler nein ja nein Memory- Anpassung, GC-Tuning, Memory-Analyse (Histogramm, Dump) ja Ursache bekannt? Hybride Threaddump Analyse top -H, jstack nein Ursache beheben oder kompensierende Maßnahmen: externe Systeme, Locks, ja
  • 26. © Tobias@Frech.info 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=...
  • 27. © Tobias@Frech.info 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!
  • 28. © Tobias@Frech.info 28 Vielen Dank! ● Fragen? Tobias@Frech.info / @TobiasFrech
  • 29. © Tobias@Frech.info 29 Quellen ● Index Panama papers for elastic graph https://gist.github.com/markharwood/3306f80 3c727b29ed2622ee181994cb7 ● Specially Designated Nationals List - Data Formats (Machine Readable, sdn.csv) https://www.treasury.gov/resource- center/sanctions/SDN-List/Pages/sdn_data.aspx