SlideShare a Scribd company logo
1 of 47
Download to read offline
Hvordan enkel analyse kan øke
stabiliteten og hastigheten på
         din server VM!
                    Javazone 2010
                     Henning Spjelkavik
Demo
Mål
• Grunnleggende kunnskap om heap og tråder
• Ferdigheter til å ta en enkel analyse
• Gjenkjenne noen vanlige problemer
Agenda
• Demo
• Hva er garbage collection? Har vi det? Trenger vi
  det?
• Hvordan analysere demo?
  – Først med kommandolinjeverktøy
  – Deretter med VisualVM
  – Yourkit
• Hva har skjedd - vi ser på kode
• Analyse av minne- og trådlekkasje
• Demonstrasjon av ulike case
Søker etter flytopplevelser!


Henning Spjelkavik
Demo – hva skjedde?
• Drift. Hva gjør vi nå? Restart?

• Første bud:
• Se i loggen!
Hvordan bli god!
• «Outliers»
• Som med leger: bør ha sett det før
• Hvordan få erfaring
  – Oppsøke læring
  – Ved å feile ofte, og lære av det
  – Lære av andre
• Lære noe annet
• Nysgjerrig – drivkraft for å forstå hva som skjer
Konklusjon
• Ved unormal oppførsel...
• ...må vi ta vare på tilstrekkelig med info
   –   Jstack, over tid
   –   Jmap
   –   Applikasjonslogger
   –   Netstat, vmstat
   –   Munin / Melody
• Descartes++: Scientific method
• Sakichi Toyoda: 5 Whys!
Søppeltømming
Referansetelling
Kompromiss – tid og rom
Synkron, stop the world
Generasjonsbasert
Parallell
                          http://www.flickr.com/photos/peterkaminski/17964466/sizes/m/in/photostream/



Størrelse
Heap i en moderne JVM
•   Forutsetning: De fleste objekter er kortlivet
•   «weak generational hypothesis»
•   Web app
•   Ulike rom
    – Young (Eden, S0, S1)
    – Tenured/old
    – Permanent
Visualisering
• Jstat –gc
• VisualVM med VisualGC
jstat –gc
S0C    S1C      S0U   S1U     EC        EU        OC         OU         PC       PU      YGC     YGCT     FGC   FGCT      GCT
68 224 68 224     0 68 224   273 152   127 522 1 945 600   1 094 537   475 648   279 260 2 101   48 748    73   205.794   693.142
68 224 68 224     0 68 224   273 152   128 550 1 945 600   1 094 537   475 648   279 260 2 101   48 748    73   205.794   693.142
68 224 68 224     0 68 224   273 152   129 891 1 945 600   1 094 537   475 648   279 260 2 101   48 748    73   205.794   693.142
68 224 68 224     0 68 224   273 152   136 394 1 945 600   1 094 537   475 648   279 260 2 101   48 748    73   205.794   693.142
68 224 68 224     0 68 224   273 152   137 400 1 945 600   1 094 537   475 648   279 260 2 101   48 748    73   205.794   693.142
68 224 68 224     0 68 224   273 152   138 741 1 945 600   1 094 537   475 648   279 260 2 101   48 748    73   205.794   693.142
68 224 68 224     0 68 224   273 152   139 747 1 945 600   1 094 537   475 648   279 260 2 101   48 748    73   205.794   693.142
68 224 68 224     0 68 224   273 152   141 173 1 945 600   1 094 537   475 648   279 260 2 101   48 748    73   205.794   693.142
68 224 68 224     0 68 224   273 152   146 470 1 945 600   1 094 537   475 648   279 260 2 101   48 748    73   205.794   693.142
68 224 68 224     0 68 224   273 152   147 963 1 945 600   1 094 537   475 648   279 260 2 101   48 748    73   205.794   693.142
68 224 68 224     0 68 224   273 152   191 471 1 945 600   1 094 537   475 648   279 260 2 101   48 748    73   205.794   693.142


 S0C – Survivor 0 Capacity – Total kapasitet
 S0U – Survivor 0 Usage – Hvor mye er i bruk
 EC/EU – Eden
 OC/OU – Old
 PC/PU – Permanent
 YGC – Antall Young Garbage Collections; YGCT – tid brukt i sekunder
 FGC – Full Garbage Collections; FGCT – tid bruk t i sekunder
 GCT – Total tid brukt på GC
Ulike justeringer
• Maksimal størrelse på heap:
     • -Xmx2300M
     • -Xms2300M
     • -XX:MaxPermSize=500M
• NewSize og Survivor ratio
Analyse av kræsj
• Caused by:
    – java.lang.OutOfMemoryError: Java heap space
    – java.lang.OutOfMemoryError: PermGen space
•   Skru på: -verbose:gc
•   jmap
•   Skru på: -XX:+HeapDumpOnOutOfMemoryError
•   VisualVM (/ NetBeans Profiler)
•   Analyse av hprof (jhat)
•   YourKit-analyse av hprof
Caused by: java.lang.OutOfMemoryError: Java heap space
       at java.util.Arrays.copyOf(Arrays.java:2882)
       at java.lang.AbstractStringBuilder.expandCapacity
       at java.lang.AbstractStringBuilder.append
       at java.lang.StringBuilder.append
       at sun.misc.FloatingDecimal.appendTo
       at java.lang.AbstractStringBuilder.append
       at java.lang.StringBuilder.append
       at net.spjelkavik.jz2010.HugeObject.<init>
       at net.spjelkavik.jz2010.RiceCookerDao.getAll
       at net.spjelkavik.jz2010.RiceCookerDao.findByPk




 La oss undersøke...
      VisualVM
      YourKit
Andre eksempler - Lekkasje
Lekkasje



1.2 GB er referert fra ResultImpl...
Lekkasje av resultatsett?
Hvor i koden objekter
er allokert?
Hvordan finne unødvendig
    objektallokering?
Tråder
• Hva er tråder?
• Hvordan ser vi dem?
  – Jstack
  – Jstack + shell
  – Tda

                         http://www.flickr.com/photos/24557420@N05/4014146016/sizes/m/in/photostream/
Tråder – hva går galt
• Ulike tilstander
  – WAITING, TIMED_WAIT
  – RUNNABLE
  – BLOCKED
• Mange som er BLOCKED, WAIT
• Mange som er RUNNABLE
• Vent noen minutter
Tråder – lekkasje fra indre klasser
Verktøy
• Jps
• Jmap -histo
• Jstack
jstack `pidof java`|grep -A 3
"State: RUNNABLE" | grep -B 1
'--' | grep -v '--' |sort
Sun JVM – Nyttige innstillinger
•   -verbose:gc
•   -Xloggc:filename
•   -XX:NewRatio=2
•   -XX:NewSize=400M
•   -Xmx2300M
•   -Xms2300M
•   -Xss256k
•   -XX:MaxPermSize=500M
•   -XX:+HeapDumpOnOutOfMemoryError
•   -XX:SurvivorRatio=4
•   -XX:+PrintGCTimeStamps
•   -XX:+PrintGCDetails
•   -XX:+PrintTenuringDistribution
•   -Dcom.sun.management.jmxremote
: 331107K->49808K(341376K), 0.2074020 secs] 1545038K->1279509K(2286976K),   0.2077580 secs] [Times: user=1.47 sys=0.04,
real=0.21 secs]
30907.016: [GC 30907.016: [ParNew
Desired survivor size 34930688 bytes, new threshold 2 (max 15)
- age   1:   29166992 bytes,   29166992 total
- age   2:   18755920 bytes,   47922912 total
: 322960K->68224K(341376K), 0.3064430 secs] 1552661K->1316380K(2286976K),   0.3068160 secs] [Times: user=2.05 sys=0.02,
real=0.31 secs]
30943.112: [GC 30943.112: [ParNew
Desired survivor size 34930688 bytes, new threshold 2 (max 15)
- age   1:   21337224 bytes,   21337224 total
- age   2:   28749016 bytes,   50086240 total
: 341376K->68224K(341376K), 0.3763560 secs] 1589532K->1335548K(2286976K),   0.3767090 secs] [Times: user=2.68 sys=0.05,
real=0.38 secs]
30967.269: [GC 30967.269: [ParNew
Desired survivor size 34930688 bytes, new threshold 2 (max 15)
- age   1:   19882256 bytes,   19882256 total
- age   2:   20090752 bytes,   39973008 total
: 341336K->66012K(341376K), 0.3809380 secs] 1608661K->1361482K(2286976K),   0.3813470 secs] [Times: user=2.43 sys=0.04,
real=0.39 secs]
31004.752: [GC 31004.752: [ParNew
Desired survivor size 34930688 bytes, new threshold 2 (max 15)
- age   1:   21067240 bytes,   21067240 total
- age   2:   17356488 bytes,   38423728 total
: 339164K->49887K(341376K), 0.1708590 secs] 1634634K->1364287K(2286976K),   0.1712090 secs]
GCViewer
Oppgave
Konklusjon
 •   Ved unormal oppførsel...
 •   ...må vi ta vare på tilstrekkelig med info
      –   Jstack, over tid, jmap
      –   Hprof
      –   Applikasjonslogger                      https://visualvm.dev.java.net/
      –   Netstat, vmstat                         http://www.yourkit.com/
      –   OS-logger/grafer (Munin / Melody)       http://kirk.blog-city.com/
                                                  http://tkyte.blogspot.com/
 •   Sakichi Toyoda: 5 Whys!
http://labs.finn.no – http://labs.skiinfo.com

henning@spjelkavik.net
http://twitter.com/spjelkavik
http://groups.google.com/group/opptur

More Related Content

Viewers also liked

Krikov Palekha Presentation
Krikov Palekha PresentationKrikov Palekha Presentation
Krikov Palekha Presentationl k
 
Hvorfor vi bør brenne gammel management litteratur
Hvorfor vi bør brenne gammel management litteraturHvorfor vi bør brenne gammel management litteratur
Hvorfor vi bør brenne gammel management litteraturHenning Spjelkavik
 
Fornebuløpet - Treningsprogram
Fornebuløpet - TreningsprogramFornebuløpet - Treningsprogram
Fornebuløpet - TreningsprogramHenning Spjelkavik
 
Geomatikkdagene 2016 - Kart på FINN.no
Geomatikkdagene 2016 - Kart på FINN.noGeomatikkdagene 2016 - Kart på FINN.no
Geomatikkdagene 2016 - Kart på FINN.noHenning Spjelkavik
 
101 mistakes FINN.no has made with Kafka (Baksida meetup)
101 mistakes FINN.no has made with Kafka (Baksida meetup)101 mistakes FINN.no has made with Kafka (Baksida meetup)
101 mistakes FINN.no has made with Kafka (Baksida meetup)Henning Spjelkavik
 
101 ways to configure kafka - badly
101 ways to configure kafka - badly101 ways to configure kafka - badly
101 ways to configure kafka - badlyHenning Spjelkavik
 
Arena and TV-production - at IOF Open Technical Meeting in Lavarone 2014
Arena and TV-production - at IOF Open Technical Meeting in Lavarone 2014Arena and TV-production - at IOF Open Technical Meeting in Lavarone 2014
Arena and TV-production - at IOF Open Technical Meeting in Lavarone 2014Henning Spjelkavik
 
How we sleep well at night using Hystrix at Finn.no
How we sleep well at night using Hystrix at Finn.noHow we sleep well at night using Hystrix at Finn.no
How we sleep well at night using Hystrix at Finn.noHenning Spjelkavik
 
101 ways to configure kafka - badly (Kafka Summit)
101 ways to configure kafka - badly (Kafka Summit)101 ways to configure kafka - badly (Kafka Summit)
101 ways to configure kafka - badly (Kafka Summit)Henning Spjelkavik
 

Viewers also liked (10)

Krikov Palekha Presentation
Krikov Palekha PresentationKrikov Palekha Presentation
Krikov Palekha Presentation
 
Hvorfor vi bør brenne gammel management litteratur
Hvorfor vi bør brenne gammel management litteraturHvorfor vi bør brenne gammel management litteratur
Hvorfor vi bør brenne gammel management litteratur
 
Fornebuløpet - Treningsprogram
Fornebuløpet - TreningsprogramFornebuløpet - Treningsprogram
Fornebuløpet - Treningsprogram
 
Fornebuløpet - Brosjyre
Fornebuløpet - BrosjyreFornebuløpet - Brosjyre
Fornebuløpet - Brosjyre
 
Geomatikkdagene 2016 - Kart på FINN.no
Geomatikkdagene 2016 - Kart på FINN.noGeomatikkdagene 2016 - Kart på FINN.no
Geomatikkdagene 2016 - Kart på FINN.no
 
101 mistakes FINN.no has made with Kafka (Baksida meetup)
101 mistakes FINN.no has made with Kafka (Baksida meetup)101 mistakes FINN.no has made with Kafka (Baksida meetup)
101 mistakes FINN.no has made with Kafka (Baksida meetup)
 
101 ways to configure kafka - badly
101 ways to configure kafka - badly101 ways to configure kafka - badly
101 ways to configure kafka - badly
 
Arena and TV-production - at IOF Open Technical Meeting in Lavarone 2014
Arena and TV-production - at IOF Open Technical Meeting in Lavarone 2014Arena and TV-production - at IOF Open Technical Meeting in Lavarone 2014
Arena and TV-production - at IOF Open Technical Meeting in Lavarone 2014
 
How we sleep well at night using Hystrix at Finn.no
How we sleep well at night using Hystrix at Finn.noHow we sleep well at night using Hystrix at Finn.no
How we sleep well at night using Hystrix at Finn.no
 
101 ways to configure kafka - badly (Kafka Summit)
101 ways to configure kafka - badly (Kafka Summit)101 ways to configure kafka - badly (Kafka Summit)
101 ways to configure kafka - badly (Kafka Summit)
 

More from Henning Spjelkavik

Hles 2021 Digital transformation - How to use digital tools to improve our ev...
Hles 2021 Digital transformation - How to use digital tools to improve our ev...Hles 2021 Digital transformation - How to use digital tools to improve our ev...
Hles 2021 Digital transformation - How to use digital tools to improve our ev...Henning Spjelkavik
 
Digital techlunsj hos FINN.no 2020-06-10
Digital techlunsj hos FINN.no 2020-06-10Digital techlunsj hos FINN.no 2020-06-10
Digital techlunsj hos FINN.no 2020-06-10Henning Spjelkavik
 
10 years of microservices at finn.no - why is that dragon still here (ndc o...
10 years of microservices at finn.no  - why is that dragon still here  (ndc o...10 years of microservices at finn.no  - why is that dragon still here  (ndc o...
10 years of microservices at finn.no - why is that dragon still here (ndc o...Henning Spjelkavik
 
How FINN became somewhat search engine friendly @ Oslo SEO meetup 2018
How FINN became somewhat search engine friendly @ Oslo SEO meetup 2018How FINN became somewhat search engine friendly @ Oslo SEO meetup 2018
How FINN became somewhat search engine friendly @ Oslo SEO meetup 2018Henning Spjelkavik
 
An approach to it in a high level event - IOF HLES 2017
An  approach to it in a high level event - IOF HLES 2017An  approach to it in a high level event - IOF HLES 2017
An approach to it in a high level event - IOF HLES 2017Henning Spjelkavik
 
Strategisk design med "Impact Mapping"
Strategisk design med "Impact Mapping"Strategisk design med "Impact Mapping"
Strategisk design med "Impact Mapping"Henning Spjelkavik
 

More from Henning Spjelkavik (7)

Hles 2021 Digital transformation - How to use digital tools to improve our ev...
Hles 2021 Digital transformation - How to use digital tools to improve our ev...Hles 2021 Digital transformation - How to use digital tools to improve our ev...
Hles 2021 Digital transformation - How to use digital tools to improve our ev...
 
Digital techlunsj hos FINN.no 2020-06-10
Digital techlunsj hos FINN.no 2020-06-10Digital techlunsj hos FINN.no 2020-06-10
Digital techlunsj hos FINN.no 2020-06-10
 
10 years of microservices at finn.no - why is that dragon still here (ndc o...
10 years of microservices at finn.no  - why is that dragon still here  (ndc o...10 years of microservices at finn.no  - why is that dragon still here  (ndc o...
10 years of microservices at finn.no - why is that dragon still here (ndc o...
 
How FINN became somewhat search engine friendly @ Oslo SEO meetup 2018
How FINN became somewhat search engine friendly @ Oslo SEO meetup 2018How FINN became somewhat search engine friendly @ Oslo SEO meetup 2018
How FINN became somewhat search engine friendly @ Oslo SEO meetup 2018
 
An approach to it in a high level event - IOF HLES 2017
An  approach to it in a high level event - IOF HLES 2017An  approach to it in a high level event - IOF HLES 2017
An approach to it in a high level event - IOF HLES 2017
 
Strategisk design med "Impact Mapping"
Strategisk design med "Impact Mapping"Strategisk design med "Impact Mapping"
Strategisk design med "Impact Mapping"
 
Misbruk av målstyring
Misbruk av målstyringMisbruk av målstyring
Misbruk av målstyring
 

Jz2010 Hvordan enkel analyse kan øke stabiliteten og hastigheten

  • 1. Hvordan enkel analyse kan øke stabiliteten og hastigheten på din server VM! Javazone 2010 Henning Spjelkavik
  • 3. Mål • Grunnleggende kunnskap om heap og tråder • Ferdigheter til å ta en enkel analyse • Gjenkjenne noen vanlige problemer
  • 4. Agenda • Demo • Hva er garbage collection? Har vi det? Trenger vi det? • Hvordan analysere demo? – Først med kommandolinjeverktøy – Deretter med VisualVM – Yourkit • Hva har skjedd - vi ser på kode • Analyse av minne- og trådlekkasje • Demonstrasjon av ulike case
  • 6. Demo – hva skjedde? • Drift. Hva gjør vi nå? Restart? • Første bud: • Se i loggen!
  • 7. Hvordan bli god! • «Outliers» • Som med leger: bør ha sett det før • Hvordan få erfaring – Oppsøke læring – Ved å feile ofte, og lære av det – Lære av andre • Lære noe annet • Nysgjerrig – drivkraft for å forstå hva som skjer
  • 8. Konklusjon • Ved unormal oppførsel... • ...må vi ta vare på tilstrekkelig med info – Jstack, over tid – Jmap – Applikasjonslogger – Netstat, vmstat – Munin / Melody • Descartes++: Scientific method • Sakichi Toyoda: 5 Whys!
  • 9. Søppeltømming Referansetelling Kompromiss – tid og rom Synkron, stop the world Generasjonsbasert Parallell http://www.flickr.com/photos/peterkaminski/17964466/sizes/m/in/photostream/ Størrelse
  • 10. Heap i en moderne JVM
  • 11. Forutsetning: De fleste objekter er kortlivet • «weak generational hypothesis» • Web app • Ulike rom – Young (Eden, S0, S1) – Tenured/old – Permanent
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17. Visualisering • Jstat –gc • VisualVM med VisualGC
  • 18.
  • 19.
  • 20.
  • 21.
  • 22. jstat –gc S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT 68 224 68 224 0 68 224 273 152 127 522 1 945 600 1 094 537 475 648 279 260 2 101 48 748 73 205.794 693.142 68 224 68 224 0 68 224 273 152 128 550 1 945 600 1 094 537 475 648 279 260 2 101 48 748 73 205.794 693.142 68 224 68 224 0 68 224 273 152 129 891 1 945 600 1 094 537 475 648 279 260 2 101 48 748 73 205.794 693.142 68 224 68 224 0 68 224 273 152 136 394 1 945 600 1 094 537 475 648 279 260 2 101 48 748 73 205.794 693.142 68 224 68 224 0 68 224 273 152 137 400 1 945 600 1 094 537 475 648 279 260 2 101 48 748 73 205.794 693.142 68 224 68 224 0 68 224 273 152 138 741 1 945 600 1 094 537 475 648 279 260 2 101 48 748 73 205.794 693.142 68 224 68 224 0 68 224 273 152 139 747 1 945 600 1 094 537 475 648 279 260 2 101 48 748 73 205.794 693.142 68 224 68 224 0 68 224 273 152 141 173 1 945 600 1 094 537 475 648 279 260 2 101 48 748 73 205.794 693.142 68 224 68 224 0 68 224 273 152 146 470 1 945 600 1 094 537 475 648 279 260 2 101 48 748 73 205.794 693.142 68 224 68 224 0 68 224 273 152 147 963 1 945 600 1 094 537 475 648 279 260 2 101 48 748 73 205.794 693.142 68 224 68 224 0 68 224 273 152 191 471 1 945 600 1 094 537 475 648 279 260 2 101 48 748 73 205.794 693.142 S0C – Survivor 0 Capacity – Total kapasitet S0U – Survivor 0 Usage – Hvor mye er i bruk EC/EU – Eden OC/OU – Old PC/PU – Permanent YGC – Antall Young Garbage Collections; YGCT – tid brukt i sekunder FGC – Full Garbage Collections; FGCT – tid bruk t i sekunder GCT – Total tid brukt på GC
  • 23.
  • 24. Ulike justeringer • Maksimal størrelse på heap: • -Xmx2300M • -Xms2300M • -XX:MaxPermSize=500M • NewSize og Survivor ratio
  • 25. Analyse av kræsj • Caused by: – java.lang.OutOfMemoryError: Java heap space – java.lang.OutOfMemoryError: PermGen space • Skru på: -verbose:gc • jmap • Skru på: -XX:+HeapDumpOnOutOfMemoryError • VisualVM (/ NetBeans Profiler) • Analyse av hprof (jhat) • YourKit-analyse av hprof
  • 26. Caused by: java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:2882) at java.lang.AbstractStringBuilder.expandCapacity at java.lang.AbstractStringBuilder.append at java.lang.StringBuilder.append at sun.misc.FloatingDecimal.appendTo at java.lang.AbstractStringBuilder.append at java.lang.StringBuilder.append at net.spjelkavik.jz2010.HugeObject.<init> at net.spjelkavik.jz2010.RiceCookerDao.getAll at net.spjelkavik.jz2010.RiceCookerDao.findByPk La oss undersøke... VisualVM YourKit
  • 27. Andre eksempler - Lekkasje
  • 28. Lekkasje 1.2 GB er referert fra ResultImpl... Lekkasje av resultatsett?
  • 29. Hvor i koden objekter er allokert?
  • 30. Hvordan finne unødvendig objektallokering?
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36. Tråder • Hva er tråder? • Hvordan ser vi dem? – Jstack – Jstack + shell – Tda http://www.flickr.com/photos/24557420@N05/4014146016/sizes/m/in/photostream/
  • 37. Tråder – hva går galt • Ulike tilstander – WAITING, TIMED_WAIT – RUNNABLE – BLOCKED • Mange som er BLOCKED, WAIT • Mange som er RUNNABLE • Vent noen minutter
  • 38. Tråder – lekkasje fra indre klasser
  • 39. Verktøy • Jps • Jmap -histo • Jstack
  • 40. jstack `pidof java`|grep -A 3 "State: RUNNABLE" | grep -B 1 '--' | grep -v '--' |sort
  • 41. Sun JVM – Nyttige innstillinger • -verbose:gc • -Xloggc:filename • -XX:NewRatio=2 • -XX:NewSize=400M • -Xmx2300M • -Xms2300M • -Xss256k • -XX:MaxPermSize=500M • -XX:+HeapDumpOnOutOfMemoryError • -XX:SurvivorRatio=4 • -XX:+PrintGCTimeStamps • -XX:+PrintGCDetails • -XX:+PrintTenuringDistribution • -Dcom.sun.management.jmxremote
  • 42. : 331107K->49808K(341376K), 0.2074020 secs] 1545038K->1279509K(2286976K), 0.2077580 secs] [Times: user=1.47 sys=0.04, real=0.21 secs] 30907.016: [GC 30907.016: [ParNew Desired survivor size 34930688 bytes, new threshold 2 (max 15) - age 1: 29166992 bytes, 29166992 total - age 2: 18755920 bytes, 47922912 total : 322960K->68224K(341376K), 0.3064430 secs] 1552661K->1316380K(2286976K), 0.3068160 secs] [Times: user=2.05 sys=0.02, real=0.31 secs] 30943.112: [GC 30943.112: [ParNew Desired survivor size 34930688 bytes, new threshold 2 (max 15) - age 1: 21337224 bytes, 21337224 total - age 2: 28749016 bytes, 50086240 total : 341376K->68224K(341376K), 0.3763560 secs] 1589532K->1335548K(2286976K), 0.3767090 secs] [Times: user=2.68 sys=0.05, real=0.38 secs] 30967.269: [GC 30967.269: [ParNew Desired survivor size 34930688 bytes, new threshold 2 (max 15) - age 1: 19882256 bytes, 19882256 total - age 2: 20090752 bytes, 39973008 total : 341336K->66012K(341376K), 0.3809380 secs] 1608661K->1361482K(2286976K), 0.3813470 secs] [Times: user=2.43 sys=0.04, real=0.39 secs] 31004.752: [GC 31004.752: [ParNew Desired survivor size 34930688 bytes, new threshold 2 (max 15) - age 1: 21067240 bytes, 21067240 total - age 2: 17356488 bytes, 38423728 total : 339164K->49887K(341376K), 0.1708590 secs] 1634634K->1364287K(2286976K), 0.1712090 secs]
  • 45.
  • 46.
  • 47. Konklusjon • Ved unormal oppførsel... • ...må vi ta vare på tilstrekkelig med info – Jstack, over tid, jmap – Hprof – Applikasjonslogger https://visualvm.dev.java.net/ – Netstat, vmstat http://www.yourkit.com/ – OS-logger/grafer (Munin / Melody) http://kirk.blog-city.com/ http://tkyte.blogspot.com/ • Sakichi Toyoda: 5 Whys! http://labs.finn.no – http://labs.skiinfo.com henning@spjelkavik.net http://twitter.com/spjelkavik http://groups.google.com/group/opptur