3. Performance Testing
Base
Oracle Solution Center. Linlithgow, Scotland, UK.
Application
JetB2. Core Banking System.
ADF Faces, ADF Controller, ADF Model, ADF BC
JDeveloper R2 11.1.2.3.0
Application Server
Oracle WebLogic 10.3.6
Jrockit VM R28.2.5-4.1.0
Database
Oracle RDBMS 11g R2
Targets
Maximum number of users per JVM, per Box
Minimum number of database connections
Detect memory leaks
Check application scalability
Tune JVM to get the best response time
Get 6000 simultaneously working users
Eugene Fedorenko
adfpractice-fedor.blogspot.com
3
4. Tools
Oracle Application Testing Suite
Load generating
Response time monitoring
JRockit Mission Control
Online JVM monitoring and flight recording
JRockit Memory Leak Detector
Analyzing heap contents
Detecting memory leaks
Oracle Enterprise Manager Cloud Control
Monitoring database connections
Detecting heavy SQL queries
Oracle Diagnostic Log Analyzer
Exploring request structure and SQL executions
NMON
Gathering operating system statistics
Eugene Fedorenko
adfpractice-fedor.blogspot.com
4
9. Parallel Garbage Collector
Frequent garbage collections (every ~40s)
Long pauses (~8s and longer)
Frequent and huge peaks in response time line
Eugene Fedorenko
adfpractice-fedor.blogspot.com
9
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 Fedorenko
adfpractice-fedor.blogspot.com
11
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 Fedorenko
adfpractice-fedor.blogspot.com
14
15. Lessons
Parallel Garbage Collector
High performance between collections
Short collection duration but long pauses
Good for applications with high throughput requirement. Batch processing
Concurrent Garbage Collector
Sharing CPU between GC and Java threads
Long collection duration but short pauses
Good for applications sensitive to long pauses. Transaction based systems
Single-generational Garbage Collector
All garbage is collected at once
Good for set of stable long living objects
Two-generational Garbage Collector
Short-living objects live short
Good for applications with large number of temporary objects
Eugene Fedorenko
adfpractice-fedor.blogspot.com
15
16. What is good for ADF?
Sensitive to long pauses?
No
No
Single Concurrent
Yes
A lot of temporary objects?
Yes
Single Parallel
-Xgc:singlecon
-Xgc:singlepar
Generational Concurrent
Generational Parallel
-Xgc:gencon
-Xgc:genpar
Eugene Fedorenko
adfpractice-fedor.blogspot.com
16
17. Useful Links
Understanding Memory Management
http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/garbage_colle
ct.html
Tuning the Memory Management System
http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/m
emman.html
JRockit GC in Action
http://java.dzone.com/articles/jrockit-gc-action
Eugene Fedorenko
adfpractice-fedor.blogspot.com
17