Što kad se (s)ruši ili stane java...
TRANSCRIPT
![Page 1: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/1.jpg)
POSLOVNE WEB APLIKACIJE 12.05.2015.
Matija Tomaškovid | Evolva, CEO
Što kad se (s)ruši ili stane Java aplikacija?
![Page 2: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/2.jpg)
ŠTO KAD SE (S)RUŠI ILI STANE JAVA APLIKACIJA?
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 2 | 12.05.2015.
Java web aplikacije u enterprise okruženju
Baza
Java web aplikacija
› enterprise okruženje - veliki broj korisnika › rušenje/zastoj aplikacije – mogude ozbiljne posljedice
![Page 3: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/3.jpg)
ŠTO KAD SE (S)RUŠI ILI STANE JAVA APLIKACIJA?
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 3 | 12.05.2015.
Najčešći razlozi pada Java web aplikacija
› Pad radi greške na nivou pojedine akcije » česti uzrok: nedostatak granica
› Pad radi prevelikog opterećenja
› Pad radi dugoročne anomalije
» prevencija: short term scenariji / unit testovi
» prevencija: peak test
» prevencija : long-term testovi
![Page 4: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/4.jpg)
ŠTO KAD SE (S)RUŠI ILI STANE JAVA APLIKACIJA?
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 4 | 12.05.2015.
Najčešći razlozi pada Java web aplikacija
› Pad radi greške na nivou pojedine akcije » česti uzrok: nedostatak granica
› Pad radi prevelikog opterećenja
› Pad radi dugoročne anomalije
» prevencija: short term scenariji / unit testovi
» prevencija: peak test
» prevencija : long-term testovi
![Page 5: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/5.jpg)
ŠTO KAD SE (S)RUŠI ILI STANE JAVA APLIKACIJA?
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 5 | 12.05.2015.
Klasifikacija pada sustava: rušenje ili zastoj?
RUŠENJE › JVM crash
ZASTOJI › Zauzede resursa
» Memorija » Thread pool » Disk » Baza: connection pools, statements, ...
› Loša sinhronizacija threadova » puno blocked threadova » thread deadlock
› Mrtva petlja
![Page 7: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/7.jpg)
ŠTO KAD SE (S)RUŠI ILI STANE JAVA APLIKACIJA?
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 7 | 12.05.2015.
Situacija: JVM crash
› hs_err_pid*.log datoteku kreira JVM kod rušenja › na vrhu je razlog
![Page 8: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/8.jpg)
ŠTO KAD SE (S)RUŠI ILI STANE JAVA APLIKACIJA?
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 8 | 12.05.2015.
Situacija: JVM crash
Gdje je file? › datoteka je locirana gdje je pokrenut JVM proces › ako je u pitanju bio Windows servis, onda može završiti u
C:\Windows\System32 (za 32bit) › Java 6+:
› -XX:ErrorFile=./hs_err_pid<pid>.log
Uzrok? › ako koristite native kod – vrlo vjerojatno poziv vanjske native funkcije › ako ne koristite – onda JVM bug – prijaviti grešku i uzeti novi JDK
![Page 9: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/9.jpg)
DEMO: JVM crash – native code
![Page 10: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/10.jpg)
![Page 11: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/11.jpg)
![Page 12: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/12.jpg)
![Page 13: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/13.jpg)
![Page 15: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/15.jpg)
ŠTO KAD SE (S)RUŠI ILI STANE JAVA APLIKACIJA?
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 15 | 12.05.2015.
Struktura memorije JVM-a
JVM
Heap memory: Java objects -Xmx=256m
Non-heap:
Tenured generation Young generation
Eden Survivor 1
Survivor 2
java.lang.OutOfMemoryError: Java heap space
Stack memory: per thread (local variables, method calls) -Xss512k
Permanent generation (JDK 7) Loaded classes, String pool, ... -XX:MaxPermSize=128m
java.lang.OutOfMemoryError: PermGen space
Code cache: native code Metaspace (JDK 8)
java.lang.StackOverflowError
![Page 16: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/16.jpg)
ŠTO KAD SE (S)RUŠI ILI STANE JAVA APLIKACIJA?
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 16 | 12.05.2015.
Potrošnja memorije u usporedbi s ostalim
![Page 17: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/17.jpg)
ŠTO KAD SE (S)RUŠI ILI STANE JAVA APLIKACIJA?
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 17 | 12.05.2015.
Potrošnja memorije u usporedbi s ostalim
![Page 18: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/18.jpg)
ŠTO KAD SE (S)RUŠI ILI STANE JAVA APLIKACIJA?
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 18 | 12.05.2015.
Heap dump - analiza
› Ručno: › %JAVA_HOME%\bin\jmap -dump:format=b,
file=d:\manual_heap_dump.bin <pid> › Automatski:
› -XX:+HeapDumpOnOutOfMemoryError › -XX:HeapDumpPath=D:\auto_heap_dump.bin
› Oracle JDK
› heapdump file: *.bin, *.hprof › Eclipse Memory Analyzer Toolkit:
› http://www.eclipse.org/mat/
› Visual VM: › http://visualvm.java.net/
› IBM WebSphere › javacore file - *.phd (portable heap dump) › IBM HeapAnalyzer
› https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=4544bafe-c7a2-455f-9d43-eb866ea60091
![Page 19: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/19.jpg)
![Page 20: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/20.jpg)
DEMO: Eclipse MAT, IBM Heap Analyser,
Visual VM (runtime)
![Page 22: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/22.jpg)
ŠTO KAD SE (S)RUŠI ILI STANE JAVA APLIKACIJA?
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 22 | 12.05.2015.
Praćenje threadova – blokade / dead loop
Blokirani threadovi Dead loop / dead lock
![Page 23: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/23.jpg)
ŠTO KAD SE (S)RUŠI ILI STANE JAVA APLIKACIJA?
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 23 | 12.05.2015.
Praćenje threadova - vizualno
![Page 24: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/24.jpg)
ŠTO KAD SE (S)RUŠI ILI STANE JAVA APLIKACIJA?
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 24 | 12.05.2015.
Praćenje threadova - pretraživanje
![Page 25: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/25.jpg)
ŠTO KAD SE (S)RUŠI ILI STANE JAVA APLIKACIJA?
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 25 | 12.05.2015.
Praćenje threadova - uzorkovanje
![Page 26: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/26.jpg)
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 26 | 12.05.2015.
Logging Orphan requests Log extractor
![Page 27: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/27.jpg)
ŠTO KAD SE (S)RUŠI ILI STANE JAVA APLIKACIJA?
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 27 | 12.05.2015.
Struktura loga
Main log 10h 11h 12h 12.45h
13h 14h
Requests
Restart
Requests
› main log: › bilježiti requeste:
› u svakoj liniji identifikator requesta
› početak requesta › detalje › kraj requesta
› bilježiti (re)start sustava
› To omogudava pronalazak dugih i problematičnih requesta
Error log
![Page 28: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/28.jpg)
ŠTO KAD SE (S)RUŠI ILI STANE JAVA APLIKACIJA?
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 28 | 12.05.2015.
Struktura loga
Main log 10h 11h 12h 12.45h
13h 14h
Requests
Restart
Requests
› main log: › bilježiti requeste:
› u svakoj liniji identifikator requesta
› početak requesta › detalje › kraj requesta
› bilježiti (re)start sustava
› To omogudava pronalazak dugih i problematičnih requesta
Error log
![Page 29: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/29.jpg)
DEMO: Orphan log analyser
![Page 30: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/30.jpg)
ŠTO KAD SE (S)RUŠI ILI STANE JAVA APLIKACIJA?
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 30 | 12.05.2015.
Request logging + log extractor
![Page 31: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/31.jpg)
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 31 | 12.05.2015.
Pradenje konekcija na bazi
![Page 32: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/32.jpg)
ŠTO KAD SE (S)RUŠI ILI STANE JAVA APLIKACIJA?
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 32 | 12.05.2015.
Dekoracija konekcija
![Page 33: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/33.jpg)
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 33 | 12.05.2015.
Prevencija: što raditi da Java aplikacija radi bez zastoja
![Page 34: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/34.jpg)
ŠTO KAD SE (S)RUŠI ILI STANE JAVA APLIKACIJA?
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 34 | 12.05.2015.
Dobro planirati arhitekturu
Database
⁞ Server 1
⁞ Cluster
Load balancer
JVM 2
⁞ Server 2
JVM 3
JVM 4
JVM 1
⁞ Korisnici
Reporting JVM 2
Reporting JVM 1
Database
Poželjan WatchDog
![Page 35: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/35.jpg)
ŠTO KAD SE (S)RUŠI ILI STANE JAVA APLIKACIJA?
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 35 | 12.05.2015.
Segregacija upita/servisa
Database
JVM
⁞ Brzi upiti
Logika za
odlučivanje
Brza akcija
⁞ Spori upiti
Spori upit
Spori izvještaj
Brza validacija
DB pool brzi
DB pool spori
![Page 36: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/36.jpg)
ŠTO KAD SE (S)RUŠI ILI STANE JAVA APLIKACIJA?
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 36 | 12.05.2015.
Pratiti performanse sustava
![Page 38: Što kad se (s)ruši ili stane Java aplikacija?2017.javacro.hr/content/download/6753/115581/file/203-Tomaskovic+... · 12.05.2015. POSLOVNE WEB APLIKACIJE Matija Tomaškovid | Evolva,](https://reader031.vdocuments.pub/reader031/viewer/2022020214/5a7973877f8b9a260e8cef31/html5/thumbnails/38.jpg)
ŠTO KAD SE (S)RUŠI ILI STANE JAVA APLIKACIJA?
POSLOVNE WEB APLIKACIJE | [email protected] | www.evolva.hr 38 | 12.05.2015.
Preporuka: sveobuhvatni report o ispadu
› Pokušati izbjeći › Biti spreman › Generalno
» kronologija rada / trenutak ispada » ... informacije o okolini koje se ne vide (lako) u logu
› PAD / ZASTOJ » hs error report (u slučaju JVM crash) » heap dump » thread dump
» thread dump uzorci koji su prethodili zastoju » request log
» orphan analysis