oow2013 ef final_4_3
DESCRIPTION
TRANSCRIPT
Eugene Fedorenkoadfpractice-fedor.blogspot.com 2
About me
Eugene Fedorenkoadfpractice-fedor.blogspot.com 3
Performance Testing
Base Oracle Solution Center. Linlithgow, Scotland, UK.
Application JetB2. Core Banking System.ADF Faces, ADF Controller, ADF Model, ADF BCJDeveloper R2 11.1.2.3.0
Application ServerOracle WebLogic 10.3.6Jrockit VM R28.2.5-4.1.0
TargetsMaximum number of users per JVM, per BoxMinimum number of database connectionsDetect memory leaksCheck application scalabilityTune JVM to get the best response timeGet 6000 simultaneously working users
DatabaseOracle RDBMS 11g R2
Eugene Fedorenkoadfpractice-fedor.blogspot.com 4
Tools
JRockit Mission Control Online JVM monitoring and flight recording
JRockit Memory Leak Detector Analyzing heap contentsDetecting memory leaks
Oracle Enterprise Manager Cloud Control Monitoring database connectionsDetecting heavy SQL queries
Oracle Diagnostic Log Analyzer Exploring request structure and SQL executions
Oracle Application Testing Suite Load generatingResponse time monitoring
NMON Gathering operating system statistics
Eugene Fedorenkoadfpractice-fedor.blogspot.com 5
Mission
Eugene Fedorenkoadfpractice-fedor.blogspot.com 6
Let’s go!
Eugene Fedorenkoadfpractice-fedor.blogspot.com 7
The Heap
-Xms
0
-Xmx
Hard Reference Soft Reference Weak Reference
java –Xms:4G –Xmx:8G
Eugene Fedorenkoadfpractice-fedor.blogspot.com 8
Garbage Collector
Mark
Sweep
Reachable Softly Reachable Weakly Reachable Garbage
0
-Xmx
Eugene Fedorenkoadfpractice-fedor.blogspot.com 9
Parallel Garbage Collector
Frequent garbage collections (every ~40s)Long pauses (~8s and longer)Frequent and huge peaks in response time line
Eugene Fedorenkoadfpractice-fedor.blogspot.com 10
Generational Parallel Garbage CollectorNursery (Young Generation) Tenured (Old Generation)
Young Collection
Old Collection
Reachable Softly Reachable Weakly Reachable Garbage
0
-Xns -Xmx
Eugene Fedorenkoadfpractice-fedor.blogspot.com 11
Generational Parallel Garbage Collector
Frequent young GC (every ~8s). Rare old GC (every ~3min) Short pauses for young GC (<300ms). Quite long pauses for old GC (~3.5s-4s).Infrequent but still high peaks in response time line
Eugene Fedorenkoadfpractice-fedor.blogspot.com 12
2. Concurrent Marking
Weakly ReachableSoftly Reachable
Concurrent Garbage Collector: Mark
1. Initial Marking
3. Precleaning
4. Final Marking
Reachable Garbage
-Xns
-Xmx
Eugene Fedorenkoadfpractice-fedor.blogspot.com 13
Concurrent Garbage Collector: Sweep
1. Sweep first half
2. Switch halves
3. Sweep second half
4. Synchronize
Reachable Softly Reachable Weakly Reachable Garbage
-Xns
-Xmx
Eugene Fedorenkoadfpractice-fedor.blogspot.com 14
Generational Concurrent Garbage Collector
Frequent young GC (every ~8s). Rare old GC (every ~2min 40s) Short pauses for young GC (<300ms). Short pauses for old GC (<700ms).Long old GC duration (~12s)
Eugene Fedorenkoadfpractice-fedor.blogspot.com 15
Lessons
Parallel Garbage Collector High performance between collectionsShort collection duration but long pausesGood for applications with high throughput requirement. Batch processing
Concurrent Garbage Collector Sharing CPU between GC and Java threadsLong collection duration but short pausesGood for applications sensitive to long pauses. Transaction based systems
Single-generational Garbage CollectorAll garbage is collected at onceGood for set of stable long living objects
Two-generational Garbage CollectorShort-living objects live shortGood for applications with large number of temporary objects
Eugene Fedorenkoadfpractice-fedor.blogspot.com 16
What is good for ADF?
Sensitive to long pauses?
Yes No
A lot
of
tem
pora
ry o
bje
cts
?
No
Yes
Generational Concurrent
-Xgc:gencon
Single Concurrent
-Xgc:singlecon
Generational Parallel
-Xgc:genpar
Single Parallel
-Xgc:singlepar
Eugene Fedorenkoadfpractice-fedor.blogspot.com 17
Useful Links
Understanding Memory Managementhttp://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/garbage_collect.html
Tuning the Memory Management Systemhttp://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/memman.html
JRockit GC in Actionhttp://java.dzone.com/articles/jrockit-gc-action
Eugene Fedorenkoadfpractice-fedor.blogspot.com 18
Mission Completed