Vous êtes sur la page 1sur 40

1

Contents
LOAD & PERFORMANCE TESTING .................................................... ERROR! BOOKMARK NOT DEFINED.
1 STRESS, LOAD, SOAK, SPIKE TESTS LOAD PROFILES ........................................ ERROR! BOOKMARK NOT DEFINED.
2 LNP TESTING LIFE CYCLE.......................................................................... ERROR! BOOKMARK NOT DEFINED.
3 EXAMPLES OF LNP TESTING OBJECTIVES ...................................................... ERROR! BOOKMARK NOT DEFINED.
3.1 RESPONSE TIME......................................................................................... ERROR! BOOKMARK NOT DEFINED.
3.2 RELIABILITY............................................................................................... ERROR! BOOKMARK NOT DEFINED.
3.3 CONFIGURATION SIZING .............................................................................. ERROR! BOOKMARK NOT DEFINED.
3.4 CAPACITY PLANNING .................................................................................. ERROR! BOOKMARK NOT DEFINED.
3.5 REGRESSION ............................................................................................. ERROR! BOOKMARK NOT DEFINED.
3.6 BOTTLENECK IDENTIFICATION ...................................................................... ERROR! BOOKMARK NOT DEFINED.
3.7 SCALABILITY .............................................................................................. ERROR! BOOKMARK NOT DEFINED.
BPEL PM: INTRODUCTION ............................................................... ERROR! BOOKMARK NOT DEFINED.
1 BPEL PM PROCESS TYPES ....................................................................... ERROR! BOOKMARK NOT DEFINED.
1.1 BY INTERFACE ........................................................................................... ERROR! BOOKMARK NOT DEFINED.
1.2 BY DURABILITY .......................................................................................... ERROR! BOOKMARK NOT DEFINED.
2 TERMINOLOGY ...................................................................................... ERROR! BOOKMARK NOT DEFINED.
3 DIFFERENCE BETWEEN ASYNC & SYNC BPEL .............................................. ERROR! BOOKMARK NOT DEFINED.
4 SOA 11G CONFIGURATION FILES AND LOG FILES LOCATION ............................. ERROR! BOOKMARK NOT DEFINED.
5 DEFAULT DATA SOURCES ......................................................................... ERROR! BOOKMARK NOT DEFINED.
6 PERFORMANCE OBJECTIVE ....................................................................... ERROR! BOOKMARK NOT DEFINED.
7 WHAT TO TUNE .................................................................................... ERROR! BOOKMARK NOT DEFINED.
8 SYSTEM SETUP ...................................................................................... ERROR! BOOKMARK NOT DEFINED.
9 IMPORTANT POINTS ............................................................................... ERROR! BOOKMARK NOT DEFINED.
10 REFERENCE......................................................................................... ERROR! BOOKMARK NOT DEFINED.
JVM TUNING ................................................................................... ERROR! BOOKMARK NOT DEFINED.
1 PAUSE TIMES AND THROUGHPUT .............................................................. ERROR! BOOKMARK NOT DEFINED.
1.1 GARBAGE COLLECTION VS. THROUGHPUT ...................................................... ERROR! BOOKMARK NOT DEFINED.
1.2 DEFRAGMENTATION PAUSES AND THROUGHPUT ............................................ ERROR! BOOKMARK NOT DEFINED.
2 PERFORMANCE AND MEMORY FOOTPRINT .................................................. ERROR! BOOKMARK NOT DEFINED.
3 JVM CHOICE ........................................................................................ ERROR! BOOKMARK NOT DEFINED.
4 JROCKITS TUNING ................................................................................. ERROR! BOOKMARK NOT DEFINED.
4.1 BOARDING INTO SHIP STEP 1 .................................................................... ERROR! BOOKMARK NOT DEFINED.
4.1.1 Heap Size ............................................................................................ Error! Bookmark not defined.
4.1.2 Garbage Collection............................................................................. Error! Bookmark not defined.
4.1.3 Nursery Size ...................................................................................... Error! Bookmark not defined.

4.1.4 Pause Target ...................................................................................... Error! Bookmark not defined.


4.2 LEAVING THE SHORE STEP 2 ...................................................................... ERROR! BOOKMARK NOT DEFINED.
4.2.1 Lazy Unlocking ................................................................................... Error! Bookmark not defined.
4.2.2 Call Profiling ....................................................................................... Error! Bookmark not defined.
4.2.3 Large Pages ........................................................................................ Error! Bookmark not defined.
4.3 IN THE HIGH SEAS STEP 3 ......................................................................... ERROR! BOOKMARK NOT DEFINED.
4.3.1 Compaction ........................................................................................ Error! Bookmark not defined.
4.3.2 Thread Local Area size ....................................................................... Error! Bookmark not defined.
5 HOTSPOTS TUNING ............................................................................... ERROR! BOOKMARK NOT DEFINED.
5.1 GARBAGE COLLECTION STRATEGIES .............................................................. ERROR! BOOKMARK NOT DEFINED.
5.1.1 Serial GC Strategy .............................................................................. Error! Bookmark not defined.
5.1.2 Parallel GC Strategy ........................................................................... Error! Bookmark not defined.
5.1.3 Parallel GC strategy ............................................................................ Error! Bookmark not defined.
6 WHERE TO SPECIFY JVM AND ITS PARAMETERS ............................................ ERROR! BOOKMARK NOT DEFINED.
7 OUTOFMEMORYERROR .......................................................................... ERROR! BOOKMARK NOT DEFINED.
7.1 JAVA.LANG.OUTOFMEMORYERROR: JAVA HEAP SPACE ................................... ERROR! BOOKMARK NOT DEFINED.
7.2 JAVA.LANG.OUTOFMEMORYERROR: PERMGEN SPACE .................................... ERROR! BOOKMARK NOT DEFINED.
7.3 JAVA.LANG.OUTOFMEMORYERROR: UNABLE TO CREATE NEW NATIVE THREAD.... ERROR! BOOKMARK NOT DEFINED.
7.4 JAVA.LANG.OUTOFMEMORYERROR: REQUESTED XXX BYTES FOR CHUNKPOOL::ALLOCATE. OUT OF SWAP SPACE
ERROR! BOOKMARK NOT DEFINED.
7.5 ANALYSIS ................................................................................................. ERROR! BOOKMARK NOT DEFINED.
8 REFERENCE .......................................................................................... ERROR! BOOKMARK NOT DEFINED.
WEBLOGIC SERVER TUNING ............................................................................................................. 15
1 THREAD MANAGEMENT/WORK MANAGER .......................................................................................... 21
1.1 REQUEST CLASSES .................................................................................................................................. 22
1.2 CONSTRAINTS ........................................................................................................................................ 24
1.3 WORK MANGER TYPES............................................................................................................................ 25
1.3.1 Default Thread Pool ........................................................................................................................ 25
1.3.2 SOAWorkManager .......................................................................................................................... 26
2 NETWORK I/O ............................................................................................................................... 28
2.1 MUXERS ............................................................................................................................................... 28
2.2 CHUNK PARAMETERS .............................................................................................................................. 29
2.3 CONNECTION BACKLOG BUFFERING ........................................................................................................... 30
2.4 CACHED CONNECTIONS ........................................................................................................................... 30
3 TUNING DATA SOURCE CONNECTION POOLS ......................................................................................... 30
3.1 STATEMENT CACHE ................................................................................................................................. 31
3.1.1 Usage Restrictions for Statement Cache ........................................................................................ 32
3.2 CONNECTION TESTING OPTIONS FOR A DATA SOURCE .................................................................................. 32
3.2.1 Automatic Testing ........................................................................................................................... 33
3.3 ENABLING CONNECTION CREATION RETRIES................................................................................................ 34
3.4 ENABLING CONNECTION REQUESTS TO WAIT FOR A CONNECTION .................................................................. 34

3.5 XA TRANSACTION TIMEOUT ..................................................................................................................... 35


3.6 AUTOMATICALLY RECOVERING LEAKED CONNECTIONS .................................................................................. 35
3.7 LIMITING STATEMENT PROCESSING TIME ................................................................................................... 36
3.8 PINNED TO THREAD PROPERTY ................................................................................................................. 36
3.9 GRIDLINK .............................................................................................................................................. 37
3.10 SINGLE CLIENT ACCESS NAME................................................................................................................. 38
3.11 LOGGING LAST RESOURCE ...................................................................................................................... 38
4 DATABASE MODE ........................................................................................................................... 39
5 REFERENCE ................................................................................................................................... 40
BPEL ENGINE TUNING ..................................................................... ERROR! BOOKMARK NOT DEFINED.
1 REAL TIME VIEWING OF PERFORMANCE METRICS .......................................... ERROR! BOOKMARK NOT DEFINED.
1.1 FUSION MIDDDLEWARE CONTROL ................................................................ ERROR! BOOKMARK NOT DEFINED.
1.2 DYNAMIC MEMORY SERVICE ....................................................................... ERROR! BOOKMARK NOT DEFINED.
2 BPEL ENGINE THREADING MODEL............................................................. ERROR! BOOKMARK NOT DEFINED.
2.1 DISPATCHER MAXIMUM REQUEST DEPTH...................................................... ERROR! BOOKMARK NOT DEFINED.
2.2 INVOKEMESSAGES IN CACHE ....................................................................... ERROR! BOOKMARK NOT DEFINED.
3 TRANSACTION TIMEOUT .......................................................................... ERROR! BOOKMARK NOT DEFINED.
3.1 SYNCMAXWAITTIME ................................................................................. ERROR! BOOKMARK NOT DEFINED.
3.2 BPEL EJBS ............................................................................................... ERROR! BOOKMARK NOT DEFINED.
3.3 GLOBAL TRANSACTION TIMEOUT AT WEBLOGIC DOMAIN LEVEL ........................ ERROR! BOOKMARK NOT DEFINED.
3.4 WEBSERVICE READ AND CONNECTION TIMEOUT ............................................. ERROR! BOOKMARK NOT DEFINED.
3.5 RELATIONSHIP AMONG TIMEOUT PARAMETERS .............................................. ERROR! BOOKMARK NOT DEFINED.
3.6 WLS TIMEOUT PARAMETERS ....................................................................... ERROR! BOOKMARK NOT DEFINED.
3.6.1 Complete Message Timeout .............................................................. Error! Bookmark not defined.
3.6.2 Idle Connection Timeout: .................................................................. Error! Bookmark not defined.
3.6.3 Tunneling Client Timeout................................................................... Error! Bookmark not defined.
3.6.4 Post Timeout ...................................................................................... Error! Bookmark not defined.
3.6.5 Duration ............................................................................................. Error! Bookmark not defined.
3.6.6 Tunneling Client Timeout................................................................... Error! Bookmark not defined.
4 BPEL PM AUDIT AND LOGGING ................................................................ ERROR! BOOKMARK NOT DEFINED.
4.1 AUDIT TUNING .......................................................................................... ERROR! BOOKMARK NOT DEFINED.
4.1.1 SOA Infrastructure level ..................................................................... Error! Bookmark not defined.
4.1.2 BPEL Engine Level .............................................................................. Error! Bookmark not defined.
4.1.3 AuditStorePolicy ................................................................................ Error! Bookmark not defined.
4.1.4 AuditFlushByteThreshold................................................................... Error! Bookmark not defined.
4.1.5 AuditFlushEventThreshold ................................................................. Error! Bookmark not defined.
4.1.6 AsyncAuditPersisterThreads .............................................................. Error! Bookmark not defined.
4.1.7 AsyncAuditQueueSize ........................................................................ Error! Bookmark not defined.
4.2 LOGGING TUNING...................................................................................... ERROR! BOOKMARK NOT DEFINED.
5 BPEL ENGINE DATABASE SCHEMA ............................................................. ERROR! BOOKMARK NOT DEFINED.
5.1 TWO SCHEMAS ......................................................................................... ERROR! BOOKMARK NOT DEFINED.

5.2 PURGE ..................................................................................................... ERROR! BOOKMARK NOT DEFINED.


5.3 PARTITIONING........................................................................................... ERROR! BOOKMARK NOT DEFINED.
5.3.1 Partial Partitioning ............................................................................. Error! Bookmark not defined.
5.3.2 Complete Partitioning ........................................................................ Error! Bookmark not defined.
6 MDS SCHEMA TUNING ........................................................................... ERROR! BOOKMARK NOT DEFINED.
6.1 PURGING ................................................................................................. ERROR! BOOKMARK NOT DEFINED.
6.2 STATISTIC COLLECTION ............................................................................... ERROR! BOOKMARK NOT DEFINED.
6.3 OPTIMIZING PATH_FULLNAME TABLE ........................................................... ERROR! BOOKMARK NOT DEFINED.
7 TECHNOLOGY ADAPTERS ......................................................................... ERROR! BOOKMARK NOT DEFINED.
7.1 FILE AND FTP ADAPTER .............................................................................. ERROR! BOOKMARK NOT DEFINED.
7.1.1 Threads .............................................................................................. Error! Bookmark not defined.
7.1.2 Inbound Throttling ............................................................................. Error! Bookmark not defined.
7.1.3 Outbound Throttling .......................................................................... Error! Bookmark not defined.
7.1.4 Outbound Performance Best Practices.............................................. Error! Bookmark not defined.
7.1.5 Tuning number of files to be processed at a time ............................. Error! Bookmark not defined.
7.2 DATABASE ADAPTER .................................................................................. ERROR! BOOKMARK NOT DEFINED.
7.2.1 Basic considerations .......................................................................... Error! Bookmark not defined.
7.2.2 Existence Checking............................................................................. Error! Bookmark not defined.
7.2.3 Throttling ........................................................................................... Error! Bookmark not defined.
7.2.4 Adapter Threads ................................................................................ Error! Bookmark not defined.
7.3 JMS ADAPTER .......................................................................................... ERROR! BOOKMARK NOT DEFINED.
7.3.1 Receive Threads ................................................................................. Error! Bookmark not defined.
7.4 AQ ADAPTER ............................................................................................ ERROR! BOOKMARK NOT DEFINED.
7.4.1 Dequeue Threads ............................................................................... Error! Bookmark not defined.
7.4.2 Dequeue Threads and Number of database connection................... Error! Bookmark not defined.
7.5 MQ ADAPTER ........................................................................................... ERROR! BOOKMARK NOT DEFINED.
7.5.1 Dequeue Threads ............................................................................... Error! Bookmark not defined.
7.6 SOCKET ADAPTER ...................................................................................... ERROR! BOOKMARK NOT DEFINED.
8 BPEL PM MISCELLANEOUS PROPERTIES ................................................... ERROR! BOOKMARK NOT DEFINED.
8.1 INSTANCE KEY BLOCK SIZE........................................................................... ERROR! BOOKMARK NOT DEFINED.
8.2 AUTOMATIC RECOVERY ATTEMPTS ............................................................... ERROR! BOOKMARK NOT DEFINED.
8.3 DISABLE BPEL MONITORS AND SENSORS ...................................................... ERROR! BOOKMARK NOT DEFINED.
9 BEST PRACTICES: BPEL PROCESS/COMPOSITE/COMPONENT............................. ERROR! BOOKMARK NOT DEFINED.
9.1 LARGE PAYLOADS ...................................................................................... ERROR! BOOKMARK NOT DEFINED.
9.2 PERSIST ONLY THE FAULTED BPEL INSTANCES................................................. ERROR! BOOKMARK NOT DEFINED.
9.3 DO NOT VALIDATE INCOMING XML .............................................................. ERROR! BOOKMARK NOT DEFINED.
9.4 IDEMPOTENENCY ....................................................................................... ERROR! BOOKMARK NOT DEFINED.
9.5 NONBLOCKINGINVOKE................................................................................ ERROR! BOOKMARK NOT DEFINED.
10 DATABASE TUNING .............................................................................. ERROR! BOOKMARK NOT DEFINED.
10.1 INITIALIZATION PARAMETERS ..................................................................... ERROR! BOOKMARK NOT DEFINED.
10.2 HUGE PAGES .......................................................................................... ERROR! BOOKMARK NOT DEFINED.
10.3 DB CONTENTION..................................................................................... ERROR! BOOKMARK NOT DEFINED.
10.3.1 Wait events ...................................................................................... Error! Bookmark not defined.

10.4 SECUREFILES........................................................................................... ERROR! BOOKMARK NOT DEFINED.


10.4.1 Enable SecureFiles for SOAINFRA schema ....................................... Error! Bookmark not defined.
10.4.2 Enabling Encryption ......................................................................... Error! Bookmark not defined.
10.5 SQL PLAN .............................................................................................. ERROR! BOOKMARK NOT DEFINED.
11 REFERENCE......................................................................................... ERROR! BOOKMARK NOT DEFINED.
EM FUSION MIDDLEWARE CONTROL AND WLS ADMIN CONSOLE..... ERROR! BOOKMARK NOT DEFINED.
1
2
3
4
5
6
7
8
9
10
11
12

STUCK THREAD MAX TIME....................................................................... ERROR! BOOKMARK NOT DEFINED.


STUCK THREAD TIMER INTERVAL ............................................................... ERROR! BOOKMARK NOT DEFINED.
TUNE DUMP CONFIGURATION ................................................................... ERROR! BOOKMARK NOT DEFINED.
DATA DISPLAY OPTION FOR EM CONSOLE ................................................... ERROR! BOOKMARK NOT DEFINED.
CACHE TIMEOUT FOR DISCOVERY ............................................................... ERROR! BOOKMARK NOT DEFINED.
PERMSIZE OF ADMIN SERVER ................................................................... ERROR! BOOKMARK NOT DEFINED.
DMSS FREQUENCY................................................................................ ERROR! BOOKMARK NOT DEFINED.
UN-TARGET DMS FROM SERVERS ............................................................. ERROR! BOOKMARK NOT DEFINED.
BPEL RECOVERY CONSOLE OPTION ............................................................. ERROR! BOOKMARK NOT DEFINED.
INDEX CREATION.................................................................................. ERROR! BOOKMARK NOT DEFINED.
DB MANUAL STATS COLLECTION ............................................................. ERROR! BOOKMARK NOT DEFINED.
REFERENCE......................................................................................... ERROR! BOOKMARK NOT DEFINED.

DATA COLLECTION .......................................................................... ERROR! BOOKMARK NOT DEFINED.


1 BEFORE LNP TEST .................................................................................. ERROR! BOOKMARK NOT DEFINED.
1.1 INFRASTRUCTURE ...................................................................................... ERROR! BOOKMARK NOT DEFINED.
1.2 JVM-HOTSPOT-<<MANAGEDSERVER>> AND JVM-JROCKIT-<<MANAGEDSERVER>> ....... ERROR! BOOKMARK NOT
DEFINED.
1.3 WLS-THREADING-<<MANAGEDSERVER>> ................................................... ERROR! BOOKMARK NOT DEFINED.
1.4 WLS-NETWORKIO-<<MANAGEDSERVER>> .................................................. ERROR! BOOKMARK NOT DEFINED.
1.5 WLS-DATASOURCE-<<MANAGEDSERVER>>................................................. ERROR! BOOKMARK NOT DEFINED.
1.6 BPEL PM-<<MANAGEDSERVER>> .............................................................. ERROR! BOOKMARK NOT DEFINED.
1.7 TECHNOLOGY ADAPTERS............................................................................. ERROR! BOOKMARK NOT DEFINED.
1.8 BPEL PM COMPOSITE ............................................................................ ERROR! BOOKMARK NOT DEFINED.
1.9 DATABASE ................................................................................................ ERROR! BOOKMARK NOT DEFINED.
2 DURING LNP TEST ................................................................................. ERROR! BOOKMARK NOT DEFINED.
2.1 CPU AND RAM USAGE AND MEMORY AVAILABILITY ........................................ ERROR! BOOKMARK NOT DEFINED.
2.2 JVMS HEAP USAGE, GARBAGE COLLECTION AND ANY MEMORY LEAK IF ANY ........ ERROR! BOOKMARK NOT DEFINED.
2.3 DATABASE CONNECTIONS AVAILABILITY AND USAGE ........................................ ERROR! BOOKMARK NOT DEFINED.
2.4 AVAILABILITY OF PERIPHERAL RESOURCES LIKE JMS QUEUES, AQ AND THEIR USAGE PATTERN .... ERROR! BOOKMARK
NOT DEFINED.
3 AFTER LNP TEST .................................................................................... ERROR! BOOKMARK NOT DEFINED.
3.1 GET FULL DUMP OF FEW IMPORTANT TABLES.................................................. ERROR! BOOKMARK NOT DEFINED.
3.2 EXECUTE SQL QUERIES AS AND WHEN REQUIRED ............................................ ERROR! BOOKMARK NOT DEFINED.

3.3 ANALYSIS OF AWR REPORT ........................................................................ ERROR! BOOKMARK NOT DEFINED.


3.4 ANALYSIS OF SOA SERVER MEMORY USAGE ................................................... ERROR! BOOKMARK NOT DEFINED.
4 REFERENCE .......................................................................................... ERROR! BOOKMARK NOT DEFINED.
LNP TEST CASE DESIGN AND LOAD TEST SELECTION ......................... ERROR! BOOKMARK NOT DEFINED.
1 LNP TEST CASE DESIGN ........................................................................... ERROR! BOOKMARK NOT DEFINED.
2 DESIGN OF EXPERIMENT .......................................................................... ERROR! BOOKMARK NOT DEFINED.
3 REFERENCE .......................................................................................... ERROR! BOOKMARK NOT DEFINED.
APPENDIX A: WEBLOGIC SERVER OVERVIEW ................................... ERROR! BOOKMARK NOT DEFINED.
1
2
3
4
5
6
7
8
9

WLS CONFIGURATION ............................................................................ ERROR! BOOKMARK NOT DEFINED.


DOMAIN ............................................................................................. ERROR! BOOKMARK NOT DEFINED.
SERVER ............................................................................................... ERROR! BOOKMARK NOT DEFINED.
ADMINISTRATION SERVER ....................................................................... ERROR! BOOKMARK NOT DEFINED.
MANAGED SERVER ................................................................................ ERROR! BOOKMARK NOT DEFINED.
ADMINISTRATION SERVER TO MANAGED SERVER INTERACTION ........................ ERROR! BOOKMARK NOT DEFINED.
CLUSTER .............................................................................................. ERROR! BOOKMARK NOT DEFINED.
NODE MANAGER................................................................................... ERROR! BOOKMARK NOT DEFINED.
MACHINE ............................................................................................ ERROR! BOOKMARK NOT DEFINED.

APPENDIX B: AUDITING IN BPEL PM ................................................ ERROR! BOOKMARK NOT DEFINED.


1 AUDIT LEVELS ....................................................................................... ERROR! BOOKMARK NOT DEFINED.
2 ORDER OF PRECEDENCE FOR AUDIT LEVEL SETTINGS ........................................ ERROR! BOOKMARK NOT DEFINED.
APPENDIX C: ANTI PATTERNS .......................................................... ERROR! BOOKMARK NOT DEFINED.
1
2
3
4
5
6
7
8
9
10

SYNCHRONOUS ASYNCHRONOUS ............................................................ ERROR! BOOKMARK NOT DEFINED.


OVER USE OF ASYNCHRONOUS PROCESSES ................................................... ERROR! BOOKMARK NOT DEFINED.
OVER USE OF DURABLE PROCESSES ............................................................. ERROR! BOOKMARK NOT DEFINED.
NO FAULT HANDLING ............................................................................. ERROR! BOOKMARK NOT DEFINED.
SYNCHRONOUS FAULT HANDLING .............................................................. ERROR! BOOKMARK NOT DEFINED.
TO MANY RETRIES .................................................................................. ERROR! BOOKMARK NOT DEFINED.
CHATTING BPEL PROCESS (CALL BACK) ....................................................... ERROR! BOOKMARK NOT DEFINED.
OVER USE OF FLOWN ............................................................................. ERROR! BOOKMARK NOT DEFINED.
LOOPS AND MORE LOOPS......................................................................... ERROR! BOOKMARK NOT DEFINED.
SYNCHRONOUS AND ASYNCHRONOUS PROCESSES ON SAME MANAGED SERVER/CLUSTER ... ERROR! BOOKMARK NOT
DEFINED.
11 DURABLE AND TRANSIENT PROCESSES ON SAME MANAGED SERVER/CLUSTER...... ERROR! BOOKMARK NOT DEFINED.
12 STICKY LOAD BALANCER ......................................................................... ERROR! BOOKMARK NOT DEFINED.

13 NOT KEEPING ASPECT RATIO ................................................................... ERROR! BOOKMARK NOT DEFINED.


APPENDIX D: SQL QUERIES .............................................................. ERROR! BOOKMARK NOT DEFINED.
1 EM CONSOLE SQL QUERIES ..................................................................... ERROR! BOOKMARK NOT DEFINED.
1.1 RECOVERY CONSOLE QUERIES ...................................................................... ERROR! BOOKMARK NOT DEFINED.
1.2 RECENT FAULT AND REJECTED MESSAGES QUERY ............................................. ERROR! BOOKMARK NOT DEFINED.
1.3 RECENT COMPOSITE INSTANCE QUERY........................................................... ERROR! BOOKMARK NOT DEFINED.
1.4 INSTANCE TAB PAGE QUERY ......................................................................... ERROR! BOOKMARK NOT DEFINED.
1.5 INSTANCE TAB PAGE SEARCH QUERY BASED ON NAME VS TITLE QUERY ................ ERROR! BOOKMARK NOT DEFINED.
1.6 FAULT AND REJECTED MESSAGE TAB PAGE QUERIES ......................................... ERROR! BOOKMARK NOT DEFINED.
1.6.1 Parent query ...................................................................................... Error! Bookmark not defined.
1.6.2 Child query ......................................................................................... Error! Bookmark not defined.
2 MISCELLANEOUS ................................................................................... ERROR! BOOKMARK NOT DEFINED.
2.1 STORED PROCEDURE TO CONVERT BLOB IN STRING .......................................... ERROR! BOOKMARK NOT DEFINED.
2.2 QUERY TO FIND PERCENTAGE OF FREE SPACE .................................................. ERROR! BOOKMARK NOT DEFINED.
2.3 QUERY TO FIND THE WAIT EVENTS FOR LGWR USING ITS SID ........................... ERROR! BOOKMARK NOT DEFINED.
2.4 QUERY TO MONITOR REDO BUFFER ALLOCATION RETRIES................................ ERROR! BOOKMARK NOT DEFINED.
2.5 SQL STATEMENT TO RECLAIM SPACE AFTER PURGING....................................... ERROR! BOOKMARK NOT DEFINED.
2.6 QUERY TO FIND OUT TOTAL SESSIONS ON A DATABASE ..................................... ERROR! BOOKMARK NOT DEFINED.
2.7 QUERY TO FIND OUT UTILIZATION OF PROCESSES AND SESSIONS IN A DATABASE ... ERROR! BOOKMARK NOT DEFINED.
2.8 FIND OUT THE PROCESS INSTANCE FROM A CONVERSATION ID WHEN THERE IS NO INSTANCE NUMBER SHOWING IN
THE LOG FILE (BPEL INSTANCE ID FOR A TIMES OUT ITEM) ....................................... ERROR! BOOKMARK NOT DEFINED.
2.9 QUERY TO GET AUDIT DETAILS FROM AUDIT_DETAILS TABLE .............................. ERROR! BOOKMARK NOT DEFINED.
2.10 QUERY TO GET AUDIT DETAILS FROM AUDIT_TRAIL TABLE ............................... ERROR! BOOKMARK NOT DEFINED.
2.11 QUERY TO GET XML MESSAGE WITH THE GIVEN INSTANCE ID ......................... ERROR! BOOKMARK NOT DEFINED.
2.12 QUERY TO GET XML MESSAGE WITH A GIVEN INSTANCE NAME........................ ERROR! BOOKMARK NOT DEFINED.
2.13 QUERY TO GET PAYLOAD SIZE OF MESSAGE ................................................... ERROR! BOOKMARK NOT DEFINED.
2.14 QUERY TO GET EXECUTION TIME OF BPEL INSTANCES .................................... ERROR! BOOKMARK NOT DEFINED.
2.15 QUERY TO GET THE EXECUTION TIME OF BPEL INSTANCES AND TO FIND THE PARENT THAT HAS INITIALIZED THE
COMPOSITE ....................................................................................................... ERROR! BOOKMARK NOT DEFINED.
2.16 QUERY TO IDENTIFY ALL THE FAULTS FOR THE MESSAGES THAT WERE SITTING IN BPEL ENGINE LEVEL RECOVERY AS
UNDELIVERED INVOKES ........................................................................................ ERROR! BOOKMARK NOT DEFINED.
APPENDIX E: BIG OR LARGE OR HUGE PAGES ................................... ERROR! BOOKMARK NOT DEFINED.
1
2
3
4

LINUX ................................................................................................. ERROR! BOOKMARK NOT DEFINED.


WINDOWS ........................................................................................... ERROR! BOOKMARK NOT DEFINED.
SOLARIS .............................................................................................. ERROR! BOOKMARK NOT DEFINED.
REFERENCE: ......................................................................................... ERROR! BOOKMARK NOT DEFINED.

APPENDIX F: ORA-01438: VALUE LARGER THAN SPECIFIED PRECISION ALLOWED .... ERROR! BOOKMARK
NOT DEFINED.

5
6
7
8

WHAT IS THE ERROR IN LOGS? .................................................................. ERROR! BOOKMARK NOT DEFINED.


EFFECTS............................................................................................... ERROR! BOOKMARK NOT DEFINED.
CAUSE ................................................................................................ ERROR! BOOKMARK NOT DEFINED.
SOLUTION ............................................................................................ ERROR! BOOKMARK NOT DEFINED.

APPENDIX G: LOBS IN THE SOAINFRA SCHEMA ................................ ERROR! BOOKMARK NOT DEFINED.
APPENDIX H: AWR, ADDM, & ASH REPORTS .................................... ERROR! BOOKMARK NOT DEFINED.
1 AWR REPORT ...................................................................................... ERROR! BOOKMARK NOT DEFINED.
2 ADDM REPORT .................................................................................... ERROR! BOOKMARK NOT DEFINED.
3 ASH REPORT ........................................................................................ ERROR! BOOKMARK NOT DEFINED.
4 AWR REPORT ANALYSIS ......................................................................... ERROR! BOOKMARK NOT DEFINED.
4.1 SQL STATEMENTS ORDERED BY ELAPSED TIME ............................................... ERROR! BOOKMARK NOT DEFINED.
4.2 SQL STATEMENTS ORDERED BY CPU TIME..................................................... ERROR! BOOKMARK NOT DEFINED.
4.3 SQL STATEMENTS ORDERED BY GETS ............................................................ ERROR! BOOKMARK NOT DEFINED.
4.4 SQL STATEMENTS ORDERED BY READS .......................................................... ERROR! BOOKMARK NOT DEFINED.
4.5 SQL STATEMENTS ORDERED BY EXECUTIONS .................................................. ERROR! BOOKMARK NOT DEFINED.
4.6 SQL STATEMENTS ORDERED BY PARSE CALLS ................................................. ERROR! BOOKMARK NOT DEFINED.
5 REFERENCE .......................................................................................... ERROR! BOOKMARK NOT DEFINED.
APPENDIX I: MONITORING SCRIPTS ................................................. ERROR! BOOKMARK NOT DEFINED.
1 DATABASE MONITORING ......................................................................... ERROR! BOOKMARK NOT DEFINED.
2 JMS MONITORING ................................................................................ ERROR! BOOKMARK NOT DEFINED.
3 AQ MONITORING .................................................................................. ERROR! BOOKMARK NOT DEFINED.
APPENDIX J: HOW TO MONITOR SOA SERVER MEMORY USAGE ....... ERROR! BOOKMARK NOT DEFINED.
1
2
3
4

SETUP: JCONSOLE OR VISUALVM (INSTALLED LOCALLY)................................... ERROR! BOOKMARK NOT DEFINED.


SETUP: JVISUALVM (INSTALLED AT REMOTE MACHINE) ................................... ERROR! BOOKMARK NOT DEFINED.
SETUP: JROCKIT MISSION CONTROL (INSTALLED AT REMOTE MACHINE) .............. ERROR! BOOKMARK NOT DEFINED.
REFERENCE .......................................................................................... ERROR! BOOKMARK NOT DEFINED.

APPENDIX K: HEAP DUMP FILES ANALYSIS: JROCKIT AND HOTSPOT JVMS ....... ERROR! BOOKMARK NOT
DEFINED.
1 EXAMPLE ANALYSIS OF A HEAP DUMP FILE USING ECLIPSE MEMORY ANALYZER ... ERROR! BOOKMARK NOT DEFINED.
2 REFERENCE .......................................................................................... ERROR! BOOKMARK NOT DEFINED.
APPENDIX L: CAPACITY PLANNING................................................... ERROR! BOOKMARK NOT DEFINED.

1 CAPACITY PLANNING FOR BPEL PM .......................................................... ERROR! BOOKMARK NOT DEFINED.


1.1 DETERMINING PERFORMANCE GOALS AND OBJECTIVES CURRENT & FUTURE.... ERROR! BOOKMARK NOT DEFINED.
1.2 MEASURING PERFORMANCE METRICS .......................................................... ERROR! BOOKMARK NOT DEFINED.
1.3 IDENTIFYING BOTTLENECKS ......................................................................... ERROR! BOOKMARK NOT DEFINED.
1.4 IMPLEMENTING A CAPACITY MANAGEMENT PLAN .......................................... ERROR! BOOKMARK NOT DEFINED.
2 REFERENCE .......................................................................................... ERROR! BOOKMARK NOT DEFINED.

Exhibits
Exhibit 1: Stress, Load, Soak, Spike Tests Load Profiles ................... Error! Bookmark not defined.
Exhibit 2: LnP Testing Life Cycle and SDLC ....................................... Error! Bookmark not defined.
Exhibit 3: BPEL Processes ................................................................. Error! Bookmark not defined.
Exhibit 4: JVM Tuning Tradeoffs ...................................................... Error! Bookmark not defined.
Exhibit 5: JVM's Garbage Collection and Throughput ..................... Error! Bookmark not defined.
Exhibit 6: jRockit Attributes ............................................................. Error! Bookmark not defined.
Exhibit 7: HostSpot Attributes ......................................................... Error! Bookmark not defined.
Exhibit 8: WLS internal applications at startup - 1 ...................................................................... 16
Exhibit 9: WLS internal applications at startup - 2 ...................................................................... 16
Exhibit 10: WLS internal applications at startup - 3 .................................................................... 17
Exhibit 11: WLS internal applications at startup - 4 ..................................................................... 18
Exhibit 12: WLS internal applications at startup - 5 ..................................................................... 19
Exhibit 13: WLS internal applications at startup - 6 ..................................................................... 20
Exhibit 14: SOAWorkManager - 1 ................................................................................................. 27
Exhibit 15: SOAWorkManager - 2 ................................................................................................. 27
Exhibit 16: SOAWorkManager - 3 ................................................................................................. 27
Exhibit 17: WLS Muxers ................................................................................................................ 29
Exhibit 18: FMC Login....................................................................... Error! Bookmark not defined.
Exhibit 19: FMC Farm Summary....................................................... Error! Bookmark not defined.
Exhibit 20: FMC Performance Summary - 1 ..................................... Error! Bookmark not defined.
Exhibit 21: FMC Performance Summary - 2 ..................................... Error! Bookmark not defined.
Exhibit 22: FMC Performance Summary - 3 ..................................... Error! Bookmark not defined.
Exhibit 23: Dynamic Memory Service .............................................. Error! Bookmark not defined.
Exhibit 24: BPEL Engine Threading Model ....................................... Error! Bookmark not defined.
Exhibit 25: Dispatcher Maximum Request Depth - 1....................... Error! Bookmark not defined.
Exhibit 26: Dispatcher Maximum Request Depth - 2....................... Error! Bookmark not defined.
Exhibit 27: InvokeMessages In Cache .............................................. Error! Bookmark not defined.
Exhibit 28: syncMaxWaitTime - 1 .................................................... Error! Bookmark not defined.
Exhibit 29: syncMaxWaitTime - 2 .................................................... Error! Bookmark not defined.
Exhibit 30: syncMaxWaitTime - 3 .................................................... Error! Bookmark not defined.
Exhibit 31: syncMaxWaitTime 4 .................................................... Error! Bookmark not defined.
Exhibit 32: BPEL EJBs - 1 ................................................................... Error! Bookmark not defined.
10

Exhibit 33: BPEL EJBs - 2 ................................................................... Error! Bookmark not defined.


Exhibit 34: BPEL EJBs - 3 ................................................................... Error! Bookmark not defined.
Exhibit 35: Global transaction timeout at WLS Domain Level - 1 .... Error! Bookmark not defined.
Exhibit 36: Global transaction timeout at WLS Domain Level - 2 .... Error! Bookmark not defined.
Exhibit 37: WLS Timeout parameters - 1 ......................................... Error! Bookmark not defined.
Exhibit 38: WLS Timeout parameters - 2 ......................................... Error! Bookmark not defined.
Exhibit 39: WLS Timeout parameters - 3 ......................................... Error! Bookmark not defined.
Exhibit 40: Tunneling Client Timeout - 1.......................................... Error! Bookmark not defined.
Exhibit 41: Tunneling Client Timeout - 2.......................................... Error! Bookmark not defined.
Exhibit 42: Tunneling Client Timeout - 3.......................................... Error! Bookmark not defined.
Exhibit 43: SOA Infrastructure level audit tuning - 1 ....................... Error! Bookmark not defined.
Exhibit 44: SOA Infrastructure level audit tuning - 2 ....................... Error! Bookmark not defined.
Exhibit 45: AuditConfig - 1 ............................................................... Error! Bookmark not defined.
Exhibit 46: AuditConfig - 2 ............................................................... Error! Bookmark not defined.
Exhibit 47: AuditConfig - 3 ............................................................... Error! Bookmark not defined.
Exhibit 48: AuditConfig - 4 ............................................................... Error! Bookmark not defined.
Exhibit 49: AuditConfig - 5 ............................................................... Error! Bookmark not defined.
Exhibit 50: Payload Validation - 1 .................................................... Error! Bookmark not defined.
Exhibit 51: Payload Validation - 2 .................................................... Error! Bookmark not defined.
Exhibit 52: AuditStorePolicy - 1 ....................................................... Error! Bookmark not defined.
Exhibit 53: AuditStorePolicy - 2 ....................................................... Error! Bookmark not defined.
Exhibit 54: Logging Tuning - 1 .......................................................... Error! Bookmark not defined.
Exhibit 55: Logging Tuning - 2 .......................................................... Error! Bookmark not defined.
Exhibit 56: Logging Tuning - 3 .......................................................... Error! Bookmark not defined.
Exhibit 57: Logging Tuning - 4 .......................................................... Error! Bookmark not defined.
Exhibit 58: MDS Purging - 1 ............................................................. Error! Bookmark not defined.
Exhibit 59: MDS Purging - 2 ............................................................. Error! Bookmark not defined.
Exhibit 60: Stuck Thread Timer Interval - 1...................................... Error! Bookmark not defined.
Exhibit 61: : Stuck Thread Timer Interval - 2.................................... Error! Bookmark not defined.
Exhibit 62: : Stuck Thread Timer Interval - 3.................................... Error! Bookmark not defined.
Exhibit 63: Data Display Option for EM Console - 1 ........................ Error! Bookmark not defined.
Exhibit 64: : Data Display Option for EM Console - 2 ...................... Error! Bookmark not defined.
Exhibit 65: : Data Display Option for EM Console - 3 ...................... Error! Bookmark not defined.
Exhibit 66: Un-Target DMS from servers - 1 .................................... Error! Bookmark not defined.
Exhibit 67: Un-Target DMS from servers - 2 .................................... Error! Bookmark not defined.
Exhibit 68: : Un-Target DMS from servers - 3 .................................. Error! Bookmark not defined.
Exhibit 69: Un-Target DMS from servers - 4 .................................... Error! Bookmark not defined.
Exhibit 70: Un-Target DMS from servers - 5 .................................... Error! Bookmark not defined.
Exhibit 71: BPEL recovery console option - 1................................... Error! Bookmark not defined.
Exhibit 72: BPEL recovery console option - 2................................... Error! Bookmark not defined.
11

Exhibit 73: vmstat ............................................................................ Error! Bookmark not defined.


Exhibit 74: free ................................................................................. Error! Bookmark not defined.
Exhibit 75: pmap .............................................................................. Error! Bookmark not defined.
Exhibit 76: top .................................................................................. Error! Bookmark not defined.
Exhibit 77: sar-B ............................................................................... Error! Bookmark not defined.
Exhibit 78: meminfo ......................................................................... Error! Bookmark not defined.
Exhibit 79: mpstat ............................................................................ Error! Bookmark not defined.
Exhibit 80: mpstat 2 4 ...................................................................... Error! Bookmark not defined.
Exhibit 81: df-m ................................................................................ Error! Bookmark not defined.
Exhibit 82: WebLogic Homes ........................................................... Error! Bookmark not defined.
Exhibit 83: Synchronous Asynchronous - 1 ................................... Error! Bookmark not defined.
Exhibit 84: Synchronous Asynchronous - 2 ................................... Error! Bookmark not defined.
Exhibit 85: Database Monitoring ..................................................... Error! Bookmark not defined.
Exhibit 86: JMS Monitoring .............................................................. Error! Bookmark not defined.
Exhibit 87: AQ Monitoring ............................................................... Error! Bookmark not defined.
Exhibit 88: Setup jConsole or visualVM (installed locally) - 1 .......... Error! Bookmark not defined.
Exhibit 89: Setup jConsole or visualVM (installed locally) - 2 .......... Error! Bookmark not defined.
Exhibit 90: Setup jConsole or visualVM (installed locally) - 3 .......... Error! Bookmark not defined.
Exhibit 91: Setup jConsole or visualVM (installed locally) - 4 .......... Error! Bookmark not defined.
Exhibit 92: Heap Dump Files analysis - 1 ......................................... Error! Bookmark not defined.
Exhibit 93: Heap Dump Files analysis - 2 ......................................... Error! Bookmark not defined.
Exhibit 94: Heap Dump Files analysis - 3 ......................................... Error! Bookmark not defined.
Exhibit 95: Heap Dump Files analysis - 4 ......................................... Error! Bookmark not defined.
Exhibit 96: Heap Dump Files analysis - 5 ......................................... Error! Bookmark not defined.
Exhibit 97: Heap Dump Files analysis - 6 ......................................... Error! Bookmark not defined.

12

Snippets
Snippet 1: Sample Work Manager - 1 ........................................................................................... 23
Snippet 2: Sample Work Manager - 2 ........................................................................................... 25
Snippet 3: Sample config.xml........................................................................................................ 26
Snippet 4: Sample startWeblogic.sh ............................................................................................. 26
Snippet 5: Using setNull In a Prepared Statement ....................................................................... 32
Snippet 6: Sample thread waiting for DB Call to finish................................................................. 39
Snippet 7: composite.xml ................................................................ Error! Bookmark not defined.
Snippet 8: Drop Histrogram ............................................................. Error! Bookmark not defined.
Snippet 9: Set Table Preferences ..................................................... Error! Bookmark not defined.
Snippet 10: Single Threaded Model - jca file ................................... Error! Bookmark not defined.
Snippet 11: Partitioned Threaded Model - jca file........................... Error! Bookmark not defined.
Snippet 12: Tuning number of files to be processed at a time ....... Error! Bookmark not defined.
Snippet 13: JMS Adapter - Receive Thread - composite.xml ........... Error! Bookmark not defined.
Snippet 14: AQ Adapter - Dequeue Threads - composite.xml......... Error! Bookmark not defined.
Snippet 15: common properties schema - 1.................................... Error! Bookmark not defined.
Snippet 16: common properties schema - 2.................................... Error! Bookmark not defined.
Snippet 17: bpel.xml ........................................................................ Error! Bookmark not defined.
Snippet 18: composite.xml .............................................................. Error! Bookmark not defined.
Snippet 19: SecureFiles .................................................................... Error! Bookmark not defined.
Snippet 20: BasicFiles to SecureFiles ............................................... Error! Bookmark not defined.

13

Tables
Table 1: AuditLevel........................................................................... Error! Bookmark not defined.
Table 2: BPEL Engine - AuditLevel .................................................... Error! Bookmark not defined.
Table 3: AuditStorePolicy ................................................................. Error! Bookmark not defined.
Table 4: SOA Schemas ...................................................................... Error! Bookmark not defined.
Table 5: SOAINFRA Tables ................................................................ Error! Bookmark not defined.
Table 6: MDS Schema tables............................................................ Error! Bookmark not defined.
Table 7: CUBE_INSTANCE................................................................. Error! Bookmark not defined.
Table 8: CUBE_SCOPE ...................................................................... Error! Bookmark not defined.
Table 9: COMPOSITE_INSTANCE ...................................................... Error! Bookmark not defined.
Table 10: COMPOSITE_INSTANCE_FAULT ....................................... Error! Bookmark not defined.
Table 11: AUDIT_TRAIL .................................................................... Error! Bookmark not defined.
Table 12: AUDIT_DETAILS ................................................................ Error! Bookmark not defined.
Table 13: DLV_MESSAGE ................................................................. Error! Bookmark not defined.
Table 14: DLV_SUBSCRIPTION ......................................................... Error! Bookmark not defined.
Table 15: DOCUMENT_CI_REF ......................................................... Error! Bookmark not defined.
Table 16: DOCUMENT_DLV_MSG_REF ............................................ Error! Bookmark not defined.
Table 17: WORK_ITEM ..................................................................... Error! Bookmark not defined.
Table 18: XML_DOCUMENT ............................................................. Error! Bookmark not defined.
Table 19: XML_DOCUMENT_REF ..................................................... Error! Bookmark not defined.
Table 20: HEADERS_PROPERTIES ..................................................... Error! Bookmark not defined.
Table 21: CLUSTER_MASTER ............................................................ Error! Bookmark not defined.
Table 22: CLUSTER_NODE ................................................................ Error! Bookmark not defined.
Table 23: Partial Partitioning ........................................................... Error! Bookmark not defined.
Table 24: Complete Partitioning ...................................................... Error! Bookmark not defined.
Table 25: MDS_NAMESAPCES.......................................................... Error! Bookmark not defined.
Table 26: MDS_PARTITIONS ............................................................ Error! Bookmark not defined.
Table 27: MDS_PATHS ..................................................................... Error! Bookmark not defined.
Table 28: File & FTP Adapter - Inbound Throttling .......................... Error! Bookmark not defined.
Table 29: : File & FTP Adapter - Outbound Throttling ..................... Error! Bookmark not defined.
Table 30: : File & FTP Adapter - Outbound Best Practices............... Error! Bookmark not defined.
Table 31: completionPersistPolicy property .................................... Error! Bookmark not defined.
Table 32: validateSchema value ...................................................... Error! Bookmark not defined.
Table 33: Idempotency value........................................................... Error! Bookmark not defined.
Table 34: nonBlockingInvoke value ................................................ Error! Bookmark not defined.
Table 35: Database initialization parameters .................................. Error! Bookmark not defined.
Table 36: Contention tables ............................................................. Error! Bookmark not defined.
Table 37: Tables under potential of index contention .................... Error! Bookmark not defined.
14

WebLogic Server Tuning


WebLogic Server (WLS) is the default option to host BPEL engine in it. This chapter is discussing
tuning of WLS form BPEL engine perspective.
The startup script for a managed server, can be located at

<<MW_HOME>>\<<user_projects>>\domain\<<domain-name>>\startWebLogic.sh

OR
<<MW_HOME>>\<<user_projects>>\domain\<<domain-name>>\bin\startWebLogic.sh

Where MW_HOME is the Middleware Home directory containing the Oracle product installation,
and domain-name is the name of the domain directory defined by the selected configuration
template.
In startWebLogic.sh file one can set JVM parameters, Java version and few more parameters
pertaining to WLS.
While starting a managed server (in which BPEL engine is deployed) make sure
that it is in production mode.

WLS deploys many internal applications during startup. Many of these internal applications are
not needed by BPEL Engine. WLS can be configured to wait and deploy these applications on
the first access (on-demand) instead of always deploying them during server startup. This can
conserve memory and CPU time during deployment as well as improving startup time and
decreasing the base memory footprint for the server.
For a development domain, the default is for WLS to deploy internal applications (console, uddi,
wlstestclient, and uddiexplorer) on-demand. For a production-mode domain, the default is for
WLS to deploy internal applications as part of server startup.

Log on to the WLS console

15

Exhibit 1: WLS internal applications at startup - 1

Click on one of the domain, e.g. myManagedDomain, in the left navigation bar in the
WLS console.

Exhibit 2: WLS internal applications at startup - 2

Open the Configuration tab and then the General sub-tab.

16

Exhibit 3: WLS internal applications at startup - 3

Click on Lock & Edit button

17

Exhibit 4: WLS internal applications at startup - 4

Deselect the checkbox labeled Enable on-demand deployment of internal applications

18

Exhibit 5: WLS internal applications at startup - 5

Click on the Save button.

19

Exhibit 6: WLS internal applications at startup - 6

Click on Release Configuration button


Restart the WLS

If set up is using custom application to manage WLS, set


InternalAppsDeployOnDemandEnabled MBean value to false to enable the on-demand
deployment of internal applications.
WLS can be tuned at various levels:
20

1. Thread Management
a. Default Thread Pool
b. SOAWorkManager
2. Network I/O
a. Muxers
b. Chunk Parameters
c. Connection Backlog Buffering
d. Cached Connections
3. Database related
a. Connection Pool
b. Transactions
c. Data Source
Enabling of on-demand deployment of internal applications will conserve
memory and CPU cycles during deployment as well as improving startup time
and decreasing the base memory footprint for the server.

1 Thread Management/Work Manager


WLS has the concept of Work Manager in its thread management. By default, WLS maintains a
single thread pool to perform all types (application specific, system specific, etc.) of processing.
One can define rules which govern request execution time limits, and rates at which request
are entering and leaving pool.
The common thread pool is managed by default work manager. The common thread pool
changes its size automatically to maximize throughput. WLS continuously does statistical
analysis on historical data and adjust thread counts accordingly.
Since thread pool size changes dynamically, in most of the cases, one need not
to tune Work Manager. But in certain conditions such as widely fluctuating load,
running other applications along with BPEL engine on the same managed server,
response time target is firm, and a minimum thread constraint needs to be
specified to avoid server deadlock, custom work mangers should be set up to
manage threads at granular level.

There is difference between the general thread pool and the work managers. The general
thread pool represents the number of threads allocated for the server. Work Managers are
dedicated to applications.
WLS Administrator can configure a set of thread usage guidelines and associate them with one
or more applications, or with particular application components. For example, one can
associate one set of scheduling guidelines for one application, and another set of guidelines for
other application. At run-time, WLS uses these guidelines to assign pending work and enqueued
requests to execution threads.
21

A work manager has following components:

Fair Share Request Class


Response Time Request Class
Context Request Class
Min Threads Constraint
Max Threads Constraint
Capacity Constraint

1.1 Request Classes


A request class expresses a scheduling guideline that WLS uses to allocate threads to requests.
Request classes help ensure that high priority work is scheduled before less important work, even
if the high priority work is submitted after the lower priority work. WLS takes into account how
long it takes for requests to each module to complete
There are multiple types of request class, each of which expresses a scheduling guideline in
different terms. A Work Manager may specify only one request class.

fair-share-request-classSpecifies the average thread-use time required to

process requests.
For example, assume that WLS is running two modules. The Work Manager for ModuleA
specifies a fair-share-request-class of 80 and the Work Manager for ModuleB
specifies a fair-share-request-class of 20.
During a period of sufficient demand, with a steady stream of requests for each module
such that the number requests exceed the number of threads; WLS will allocate 80%
and 20% of the thread-usage time to ModuleA and ModuleB respectively.
Note: The value of a fair share request class is specified as a relative value, not a
percentage. Therefore, in the above example, if the request classes were defined as 400
and 100, they would still have the same relative values.

response-time-request-classThis type of request class specifies a response time target


in milliseconds. Response time targets are not applied to individual requests. Instead,
WLS computes a tolerable waiting time for requests with that class by subtracting the
observed average thread use time from the response time goal, and schedules requests
so that the average wait for requests with the class is proportional to its tolerable
waiting time.
For example, given that ModuleA and ModuleB in the previous example, have response
time goals of 2000 ms and 5000 ms, respectively, and the actual thread use time for an
individual request is less than its response time target. During a period of sufficient
demand, with a steady stream of requests for each module such that the number
22

requests exceed the number of threads, and no think time delays between response
and request, WLS will schedule requests for ModuleA and ModuleB to keep the average
response time in the ratio 2:5. The actual average response times for ModuleA and
ModuleB might be higher or lower than the response time goals, but WLS will strive to
keep ratio of target 2:5. For example, if the average response time for ModuleA
requests is 1,000 ms, then average response time for ModuleB requests will be
approximate 2,500 ms.

context-request-classThis type of request class assigns request classes to requests

based on context information, such as the current user or the current users group.
For example, context-request-class assigns a request class to requests based on the
value of the requests subject and role properties.
A context request class defines request classes in an applications deployment
descriptor based on a users context. For example:

<work-manager>
<name>responsetime_workmanager</name>
<response-time-request-class>
<name>my_response_time</name>
<goal-ms>2000</goal-ms>
</response-time-request-class>
</work-manager>
<work-manager>
<name>context_workmanager</name>
<context-request-class>
<name>test_context</name>
<context-case>
<user-name>system</user-name>
<request-class-name>high_fairshare</request-class-name>
</context-case>
<context-case>
<group-name>everyone</group-name>
<request-class-name>low_fairshare</request-class-name>
</context-case>
</context-request-class>
</work-manager>
Snippet 1: Sample Work Manager - 1

Above, as explained the request classes based on fair share and response time by relating the
scheduling to other work using the same request class. A mix of fair share and response time
request classes is scheduled with a marked bias in favor of response time scheduling.

23

1.2 Constraints
A constraint defines minimum and maximum numbers of threads allocated to execute requests
and the total number of requests that can be queued or executing before WLS begins rejecting
requests.
One can define the following types of constraints:

constraint limits the number of concurrent threads


executing requests from the constrained work set. The default is unlimited. For
example, consider a constraint defined with maximum threads of 10 and shared by 3
entry points. The scheduling logic ensures that not more than 10 threads are executing
requests from the three entry points combined.
max-threads-constraint

A max-threads-constraint can be defined in terms of the availability of resource that


requests depend upon, such as a connection pool.
A max-threads-constraint might, but does not necessarily, prevent a request class
from taking its fair share of threads or meeting its response time goal. Once the
constraint is reached the server does not schedule requests of this type until the
number of concurrent executions falls below the limit. The server then schedules work
based on the fair share or response time target.

constraint guarantees a number of threads the server will


allocate to affected requests to avoid deadlocks. The default is zero. A min-threadsconstraint value of one is useful, for example, for a replication update request, which is
called synchronously from a peer.
min-threads-constraint

A min-threads-constraint might not necessarily increase a fair share. This type of


constraint has an effect primarily when the server instance is close to a deadlock
condition. In that case, the constraint will cause WLS to schedule a request even if
requests in the service class have more requests than its fair share recently.

constraint causes the server to reject requests only when it has reached its
capacity. The default is -1. Note that the capacity includes all requests, queued or
executing, from the constrained work set. Work is rejected either when an individual
capacity threshold is exceeded or if the global capacity is exceeded. This constraint is
independent of the global queue threshold.

Capacity

In response to stuck threads, one can define a Stuck Thread Work Manager component
that can shut down the Work Manager, move the application into admin mode, or mark
the server instance as failed.
For instance, the Work Manager defined in Listing 2.2 shuts down the Work Manager
when two threads are stuck for longer than 30 seconds.
24

<work-manager>
<name>stuckthread_workmanager</name>
<work-manager-shutdown-trigger>
<max-stuck-thread-time>30</max-stuck-thread-time>
<stuck-thread-count>2</stuck-thread-count>
</work-manager-shutdown-trigger>
</work-manager>
Snippet 2: Sample Work Manager - 2

1.3 Work Manger Types


Essentially, there are three types of Work Managers, each one characterized by its scope
(domain level, application level, and module level) and how it is defined and used. The three
types are:

The default Work Manager


Global Work Managers
Application-scoped Work Managers

One can override the behavior of the default Work Manager by creating and configuring a
global Work Manager called default. This allows one to control the default thread-handling
behavior of WLS.
The configuration of work manager is done in one of the following configuration files:

config.xmlWork Managers specified in config.xml can be assigned to any

application, or application component, in the domain. WLS Administration Console can


be used to define a Work Manager.
weblogic-application.xmlWork Managers specified at the application level can be
assigned to that application, or any component of that application.
weblogic-ejb-jar.xml or weblogic.xmlWork Managers specified at the
component-level can be assigned to that component.
weblogic.xmlWork Managers specified for a Web Application.

1.3.1 Default Thread Pool


Default Thread pool comes with 5 threads which might not be sufficient for high volume
scenario. To increase count one can modify the count using two methods:
1. In config.xml add following lines in server definition
<server>
<name>myMangedServer</name>
<self-tuning-thread-pool-size-min>150</self-tuning-thread-pool-size-

25

min>
<self-tuning-thread-pool-size-max>200</self-tuning-thread-pool-sizemax>
[...]
</server>
Snippet 3: Sample config.xml

2. Modify startWeblogic.sh to add minimum pool size parameter to pass to JVM

# START WEBLOGIC
echo "starting weblogic with Java version:"
${JAVA_HOME}/bin/java ${JAVA_VM} -version
if [ "${WLS_REDIRECT_LOG}" = "" ] ; then
echo "Starting WLS with line:"
${JAVA_HOME}/bin/java ${JAVA_VM} ${MEM_ARGS} Dweblogic.threadpool.MinPoolSize=150 -Dweblogic.Name=${SERVER_NAME} Djava.security.policy=${WL_HOME}/server/lib/weblogic.policy
${JAVA_OPTIONS} ${PROXY_SETTINGS} ${SERVER_CLASS}
else
echo "Redirecting output from WLS window to
${WLS_REDIRECT_LOG}"
${JAVA_HOME}/bin/java ${JAVA_VM} ${MEM_ARGS} Dweblogic.Name=${SERVER_NAME} Djava.security.policy=${WL_HOME}/server/lib/weblogic.policy
${JAVA_OPTIONS} ${PROXY_SETTINGS} ${SERVER_CLASS}
>"${WLS_REDIRECT_LOG}" 2>&1fi
Snippet 4: Sample startWeblogic.sh

As a good practice, set a higher than default "minimal value" for the thread pool
but no maximal value, let WLS allow to sort it out by itself.

1.3.2 SOAWorkManager
With the deployment of BPEL Engine in WLS, a work manager (wm/SOAWorkManager) gets
created. This work manager is type of Global Work manager.
26

Exhibit 7: SOAWorkManager - 1

SOAWorkManager is essentially empty Work Manger targeted to a specific cluster (all servers in
cluster).

Exhibit 8: SOAWorkManager - 2

Exhibit 9: SOAWorkManager - 3

27

For the purpose of tuning of BPEL engine, one needs to focus on SOAWorkManager
Worker Manager.

2 Network I/O
2.1 Muxers
WLS uses software modules called muxers to read incoming requests on the server and
incoming responses on the client. WLS supports the following muxers:

Java Muxer
Native Muxers
Non-Blocking IO Muxer

A "muxer" is a multiplexer, which is a mechanism for combining several streams of data on to a


single channel. WLS will be using these to exchange data with itself, or with other nodes in the
cluster. At any given time, a number of those will be "blocked", since they have nothing to do.
WLS selects which muxer implementation is using the following criteria:

If NativeIOEnabled is false and MuxerClass is null, the Java Socket Muxer is used.
If NativeIOEnabled is true and MuxerClass is null, native muxers are used, if available
for platform.
If the Muxer Class attribute is set to weblogic.socket.NIOSocketMuxer or Dweblogic.MuxerClass=weblogic.socket.NIOSocketMuxer flag is set, the NonBlocking IO Muxer is used.

Java Muxer blocks on reads until there is data to be read from a socket. This behavior does not
scale well when there are a large number of sockets and/or when data arrives infrequently at
sockets. This is typically not an issue for clients, but it can create a huge bottleneck for a server.
If the Enable Native IO parameter is not selected, the server instance exclusively
uses the Java Muxer. This might be acceptable if there are a small number of
clients and the rate at which requests arrive at the server is fairly high.

28

Exhibit 10: WLS Muxers

Under these conditions, the Java muxer performs as well as it eliminates Java Native Interface
(JNI) overhead. Unlike native muxers, the number of threads used to read requests is not fixed
and is tunable for Java muxers by configuring the Percent Socket Readers parameter setting
in the Administration Console.
Ideally, one should configure this parameter so the number of threads roughly equals the
number of remote concurrently connected clients up to 50% of the total thread pool size. Each
thread waits for a fixed amount of time for data to become available at a socket. If no data
arrives, the thread moves to the next socket.
Native muxers use platform-specific native binaries to read data from sockets. Native muxers
provide superior scalability because they implement a non-blocking thread model. When a
native muxer is used, the server creates a fixed number of threads dedicated to reading
incoming requests. One must ensure that to use Native I/O, the native library must be present
in the servers shared library path. This is set up with the default scripts. When the server does
not find the native library, it throws an error java.lang.UnsatisfiedLinkError: no muxer
in java.library.path and then loads the Java version of the muxer.

WLS also provides a non-blocking IO implementation of Native Muxers which may provide
enhanced performance for certain load scenarios.
On several platforms, WLS has performance packs. One of the major components
of performance pack is native muxer implementation. Naturally, with performance
pack, WLS performance improves dramatically if used with Native Muxers.

2.2 Chunk Parameters

29

A chunk is a unit of memory that the WLS network layer, both on the client and server side,
uses to read data from and write data to sockets. To reduce memory allocation costs, a server
instance maintains a pool of these chunks. For applications that handle large amounts of data
per request, increasing the value on both the client and server sides can boost performance.
The default chunk size is about 4K. Use the following properties to tune the chunk size and the
chunk pool size:
weblogic.Chunksize: Sets the size of a chunk (in bytes). The primary situation in which this
may need to be increased is if request sizes are large. It should be set to values that are
multiples of the network's maximum transfer unit (MTU), after subtracting from the value any
Ethernet or TCP header sizes. Set this parameter to the same value on the client and server.
weblogic.utils.io.chunkpoolsize: Sets the maximum size of the chunk pool. The default
value is 2048. The value may need to be increased if the server starts to allocate and discard
chunks in steady state. To determine if the value needs to be increased, monitor the CPU
profile or use a memory/ heap profiler for call stacks invoking the constructor
weblogic.utils.io.Chunk.
weblogic.PartitionSize: Sets the number of pool partitions used (default is 4). The chunk pool
can be a source of significant lock contention as each request to access to the pool must be
synchronized. Partitioning the thread pool spreads the potential for contention over more than
one partition.

2.3 Connection Backlog Buffering


One can tune the number of connection requests that a WLS instance will accept before
refusing additional requests. The Accept Backlog parameter specifies how many
Transmission Control Protocol (TCP) connections can be buffered in a wait queue. This fixedsize queue is populated with requests for connections that the TCP stack has received, but the
application has not accepted yet.

2.4 Cached Connections


Use the http.keepAliveCache.socketHealthCheckTimeout system property for tuning the
behavior of how a socket connection is returned from the cache when keep-alive is enabled
when using HTTP 1.1 protocol. By default, the cache does not check the health condition before
returning the cached connection to the client for use. Under some conditions, such as due to an
unstable network connection, the system needs to check the connection's health condition
before returning it to the client. To enable this behavior (checking the health condition), set
http.keepAliveCache.socketHealthCheckTimeout to a value greater than 0.

3 Tuning Data Source Connection Pools


This section discusses how to tune the connection pool attributes in JDBC data sources in WLS
domain to improve application and system performance.
30

3.1 Statement Cache


Usage of prepared statement or callable statement in an application results in considerable
processing overhead on database, and communion between WLS & database server. To
minimize the processing costs, WLS can cache prepared and callable statements used in
applications.
When an application calls any of the statements stored in the cache, WLS reuses the statement
stored in the cache. Reusing prepared and callable statements reduces CPU usage on the
database server, improving performance for the current statement.
Each connection in a data source has its own individual cache of prepared and callable
statements used on the connection. However, statement cache can be configured per data
source. For statement cache configuration there are two algorithms:

Least Recently Used (LRU)

Fixed

LRU: As name suggest, LRU caches least recently used statements used on the collection until
the statement cache size is reached. When an application calls Conn.prepareStatement(), WLS
checks to see if the statement is stored in the statement cache. If so, WLS returns the cached
statement. If the statement is not in the cache, and the cache is full (number of statements in
the cache = statement cache size), WLS determines which existing statement in the cache was
the least recently used and replaces that statement in the cache with the new statement.
Fixed: As name suggest FIXED algorithm enables WLS to cache first (till statement cache size is
reached) statements used on the connection. Statements used after the statement cache size is
reached are not cached.
LRU algorithm is preferred because rarely used statements will eventually be
replaced in the cache with frequently used statements.

Statement Cache Size


The Statement Cache Size determines the total number of statements to cache for each
connection in each instance of the data source.
If Statement cache Size is set to 0 then, statement cache is disabled. The default value is 10.
By caching statements, application performance increases. However, RDBMS may
maintain a cursor for each open statement and this applies to statements in cache.
Excessive value of statement cache size may exceed the limit of RDBMS.

For example:

31

Number of managed servers in cluster = 4


Statement Cache Size = 10
Number of connections = 20
Then, maximum number of cursor open due to this connection due to cache = 4*10*20 = 800
One needs to be aware that, there may be multiple connections to a RDBMS from an
application and multiple applications might be using same RDBMS.
3.1.1 Usage Restrictions for Statement Cache
Using the statement cache can increase performance, but there are few restrictions.
Calling a cached Statement after a DDL operation
Prepared statements stored in the cache refer to specific database objects at the time the
prepared statement is cached. If DDL (Data Definition Language) operations are performed over
the database objects referenced in statement cache, statements may fail at the time of running
them.
Using setNull In a Prepared Statement
If statement cache has a prepared statement that uses a setNull bind variable, set the variable
to the proper data type. If generic data type is used data may be truncated or the statement
may fail when it runs with a value other than null.
java.sql.Types.Long salary=null
.
.
.
if (salary == null)
setNull(2,int)//This is incorrect
else
setLong(2, salary)

Instead, use the following:


if (salary == null)
setNull(2,long)//This is correct
else
setLong(2, salary)
Snippet 5: Using setNull In a Prepared Statement

3.2 Connection Testing Options for a Data Source


To check and maintain a data source health, WLS has two options:
32

Automatic testing: In this case health check and maintenance responsibility is delegated
to WLS.
Manual testing: In this case application code is responsible for health check and
maintenance.

3.2.1 Automatic Testing


For automatic testing, one has following knobs to turn:
To use automatic testing feature, test table name must be supplied. If one wants not to use
default SQL (select 1 from dual) then desired SQL should also be specified.
Test Frequency: This attribute specifies the number of seconds between tests of unused
connections. WLS tests unused connections and if find any faulty connections then replace
them with healthy ones. If value is 0 or less, automatic testing is disabled.
Test Reserved Connections: This option enables WLS to test connection before giving to
client application.
This option reduces performance but ensures that connection handed over to
client is healthy one.

Seconds to Trust an Idle Pool Connection: This option specifies the number of seconds
after a connection has been proven to be OK to be trusted by WLS as OK and skip automatic
testing.
The duration selected for Seconds to Trust an Idle Pool Connection presents
performance optimization opportunity.

Connection Testing Semantics


When WLS tests database connections in a data source, it reserves a connection from the data
source, runs a small query on the connection, then returns the connection to the pool in the
data source. WLS instance tracks statistics on the pool status, including the amount of time a
required to complete a connection test, the number of connections waiting for a connection,
and the number of connections being tested. The history of recent test connection behavior is
used to calculate the amount of time the server instance waits until a connection test is
determined to have failed.
If a thread appears to be taking longer than normal to connect, the server instance may delay
testing on other threads until the abnormally long-running test completes. If that thread hangs
too long in connection testing (10 seconds by default), a pool may declare a RDBMS
connectivity failure, disable itself, and kill all connections, whether unreserved or in application
hands.
This is very rare, and is intended to relieve the otherwise interminable hangs that can be caused
by network cable disconnects and other problems that can lock any JVM thread which is doing a
33

call in a socket read that the JVM will be unable to break until the OS TCP limit is hit (typically
10 minutes). If a pool disables itself in this manner, it will periodically try to reconnect to the
RDBMS (every 5 seconds by default). Once a new connection can be made, the pool will reenable itself, and subsequent connection requests will be served as normal (with the pool
repopulating itself as load requires).
Note: Even one is using automatic testing and relying on WLS for connections health,
applications must not assume healthy connection in all cases and handle the exceptions that
may arise due to unhealthy/faulty connections.

3.3 Enabling Connection Creation Retries


Connection Creation Retry Frequency option specifies the number of seconds between

attempts to establish connection to the RDBMS.


If Connection Creation Retry option is enabled and if the database is unavailable at the
time of data source creation/deployment or server startup or initial capacity is increased, WLS
attempts to create connections in the pool again after the number of seconds specified, and
will continue to attempt to create the connections until it succeeds.
When Connection Creation Retry Frequency is set to zero, connection creation retry is
disabled. Default value is 0.

3.4 Enabling Connection Requests to Wait for a Connection


WLS JDBC data sources have two attributes that one can set to enable connection requests to
wait for a connection from a data source.
Connection Reserve Timeout: When an application requests a connection from a data
source, if all connections in the data source are in use and if the data source has reached to its
maximum capacity, the application will get a ConnectionUnavailableSQLException. To avoid
this, configure the Connection Reserve Timeout value (in seconds) so that connection
requests will wait for a connection to become available. After the expiry of Connection
Reserve Timeout and if no connection becomes available, the request will fail and the
application will get a PoolLimitSQLExceptionexception.
To disable Connection Reserve Timeout, set it to -1. To make client application wait
indefinitely for connection, set Connection Reserve Timeout to 0. The default value is 10
seconds.
Maximum Value: 2147483647
Maximum Waiting for Connection: A connection request that wait for a connection blocks a
thread. If too many connection requests concurrently wait for a connection and block threads,
system performance may degrade. To limit number of waiting threads manipulate the Maximum
34

Waiting for Connection attribute, which limits the number connection requests that can

concurrently wait for a connection.


The default value is MAX-INT which means no limits. Value 0 means no request will wait for
connection. If the maximum number of requests has reached to value of Maximum Waiting
for Connection then SQLException is thrown for new requests.

3.5 XA Transaction Timeout


The number of seconds to set as the transaction branch timeout.
If set, this value is passed as the transaction timeout value in the
XAResource.setTransactionTimeout() call on the XA resource manager, typically the JDBC
driver.
When this value is set to 0, the WLS Transaction Manager passes the global WLS transaction
timeout in seconds in the method.
If set, this value should be greater than or equal to the global WLS transaction timeout.
Note: Enablement of XaSetTransactionTimeout is must to enable setting the transaction
branch timeout

3.6 Automatically Recovering Leaked Connections


A leaked connection is a connection that was not properly returned to the connection pool in
the data source. To recover leaked connections, specify a value
for InActiveConnectionTimeout on the JDBC Data Source.
WLS forcibly returns a connection to the data source when there is no activity on a reserved
connection for the number of seconds that specified in InActiveConnectionTimeout
attribute.
Default value is 0 which means this feature is disabled.
Note: The actual timeout could exceed the configured value. The internal data source
maintenance thread runs every 5 seconds. When it reaches the InActiveConnectionTimeout
(for example 30 seconds), it checks for inactive connections. To avoid timing out a connection
that was reserved just before the current check or just after the previous check, the server
gives an inactive connection a "second chance." On the next check, if the connection is still
inactive, the server times it out and forcibly returns it to the data source. On average, there
could be a delay of 50% more than the configured value.
Automatic recovery of leaked connection must be enabled in any high performance
setup.

Minimum Value: 0
Maximum Value: 2147483647
35

3.7 Limiting Statement Processing Time


Statement Timeout attribute value specifies the number of seconds a SQL query may take to

execute. If query execution consume more than the time specified, JDBC driver will throw an
exception.
The default value for Statement Timeout is -1 which means SQL query will not time out due to
longer execution duration.
Setting up value of Statement Timeout in high volume transaction scenario is
performance booster at the cost of increased risk of failure of SQL queries.

Maximum value: 2147483647


Changes take effect after restart of managed server.

3.8 Pinned To Thread Property


When Pinned To Thread is enabled ( by setting it to true), WLS pins a database connection
from the data source to an execution thread the first time an application uses the thread to
reserve a connection. When the application finishes using the connection and
calls connection.close(), which otherwise returns the connection to the data source, WLS
keeps the connection with the execute thread and does not return it to the data source. When
an application subsequently requests a connection using the same execute thread, WLS
provides the connection already reserved by the thread. There is no locking contention on the
data source that occurs when multiple threads attempt to reserve a connection at the same
time and there is no contention for threads that attempt to reserve the same connection from
a limited number of database connections.
Note: Pinned To Thread property has no effect with multi data sources, Oracle RAC, and
IdentityPool.
Since the nature of connection pooling behavior is changed when Pinned-To-Thread is enabled,
some connection pool attributes or features behave differently or are disabled to suit the
behavior change:

Maximum Capacity is ignored. The number of connections in a connection pool equals

the greater of either the initial capacity or the number of connections reserved from the
connection pool.
Shrinking does not apply to connection pools because connections are never returned
to the connection pool. Effectively, they are always reserved.
When a connection pool is Reset, the reset connections from the connection pool are
marked as Test Needed. The next time each connection is reserved, WLS tests the
connection and recreates it if necessary. Connections are not tested synchronously
when one reset the connection pool. This feature requires that Test Connections on
Reserve is enabled and a Test Table Name or query is specified.
36

Additional Database Resource Costs When Pinned To Thread is Enabled


When Pinned To Thread is enabled, the Maximum Capacity attribute specified is ignored. The
maximum numbers of connections are calculated differently.
Number of servers in cluster = n
Number of threads to execute a connection = m
Number of connections reserved by each thread = p
Number of maximum connections required = n*m*p
While using Pinned To Thread property, consider large number of connections and open
cursors required by RDBMS.
Note: Connections are never returned to the connection pool, so the connection pool can
never shrink to reduce the number of connections and associated resources in use. This cost
can be reduced by setting a driver parameter onePinnedConnectionOnly.
When onePinnedConnectionOnly is set to true, only the first connection requested is pinned
to the thread. Any additional connections required by the thread are taken from and returned
to the connection pool as needed.
If WLS and RDBMS setup can handle the additional resource requirements, use the
Pinned To Thread option to increase performance. If WLS or RDBMS cannot handle
the additional resource requirements (throw errors after enabling Pinned To
Thread) do not use Pinned To Thread.

3.9 GridLink
GridLink is data source implementation targeted to Oracle RAC cluster. It responds to FAN
events to provide Fast Connection Failover (FCF), Runtime Connection Load-Balancing (RCLB),
and RAC instance graceful shutdown. XA affinity is supported at the global transaction Id level.
A GridLink data source uses Fast Connection Failover to:

Provide rapid failure detection


Abort and remove invalid connections from the connection pool
Perform graceful shutdown for planned and unplanned Oracle RAC node outages
Adapt to changes in topology, such as adding or removing a node
Distribute runtime work requests to all active Oracle RAC instances, including those
rejoining a cluster

GridLink data sources use runtime connection load balancing to distribute connections to
Oracle RAC instances based on Oracle FAN events issued by the database. This simplifies data
37

source configuration and improves performance as the database drives load balancing of
connections through the GridLink data source, independent of the database topology. Runtime
Connection Load Balancing allows WLS to:

Adjust the distribution of work based on back end node capacities such as CPU,
availability, and response time
React to changes in Oracle RAC topology
Manage pooled connections for high performance and scalability

3.10 Single Client Access Name


Single Client Access Name (SCAN) is a new Oracle Real Application Clusters (RAC) 11g Release 2
feature that provides a single name for clients to access Oracle Databases running in a cluster.
The benefit is that the clients connect information does not need to change if one add or
remove nodes in the cluster. Having a single name to access the cluster allows clients to use the
simple JDBC thin URL to access any database running in the cluster, independently of which
server(s) in the cluster the database is active. SCAN provides load balancing and failover for
client connections to the database. The JDBC URL should be setup as:
jdbc:oracle:thin:@<<rdbms-scan>>:<<scan-port>>/<<service-name>>

Where rdbms-scan is the scan of the database cluster, the scan-port is the port of the scan
listeners; the service-name is the service name that is used for connection to the database.

3.11 Logging Last Resource


The Logging Last Resource (LLR) transaction optimization through JDBC data sources safely
reduces the overhead of two-phase transactions involving database inserts, updates, and
deletes. Two phase transactions occur when two different resources participate in the same
global transaction (global transactions are often referred to as "XA" or "JTA" transactions). JDBC
LLR works by storing two-phase transaction records in a database table rather than in the
transaction manager log (the TLOG). The LLR option significantly improves the performance
over XA.

JDBC LLR generally improves performance of two-phase transactions that involve SQL
updates, deletes, or inserts.
LLR generally reduces the performance of two-phase transactions where all SQL
operations are read-only (just selects).
Consider using LLR instead of the less safe "last-agent" optimization for connectors, and
the less safe "emulate-two-phase-commit" option for JDBC connection pools (formerly
known as the "enable two-phase commit" option for pools that use non-XA drivers).
On Oracle databases, heavily used LLR tables may become fragmented over time, which
can lead to unused extents. This is likely due to the highly transient nature of the LLR
table's data. To help avoid the issue, set PCT_FREE to 5 and PCT_USED to 95 on the LLR
38

table. Also periodically defragment using the ALTER TABLESPACE [tablespace-name]


COALESCE command.

4 Database Mode
There are two modes of database connections: Shared and Dedicated. Database in shared
mode may be slower and no information will be available AWR report. Threads will be waiting
for the database calls to finish.
Sample thread waiting for DB Call to finish:
"[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (selftuning)'" id=68 idx=0x130 tid=3996 prio=5 alive, in native, daemon
at
jrockit/net/SocketNativeIO.readBytesPinned(Ljava/io/FileDescriptor;[BIII)I(Na
tive Method)
at jrockit/net/SocketNativeIO.socketRead(SocketNativeIO.java:32)
at
java/net/SocketInputStream.socketRead0(Ljava/io/FileDescriptor;[BIII)I(Socket
InputStream.java)
at java/net/SocketInputStream.read(SocketInputStream.java:129)
at oracle/net/ns/Packet.receive(Packet.java:293)
at oracle/net/ns/DataPacket.receive(DataPacket.java:104)
at oracle/net/ns/NetInputStream.getNextPacket(NetInputStream.java:315)
at oracle/net/ns/NetInputStream.read(NetInputStream.java:260)
at oracle/net/ns/NetInputStream.read(NetInputStream.java:185)
at oracle/net/ns/NetInputStream.read(NetInputStream.java:102)
at
oracle/jdbc/driver/T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputS
treamWrapper.java:124)[inlined]
at
oracle/jdbc/driver/T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapp
er.java:80)[optimized]
at
oracle/jdbc/driver/T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1136)[inlined]
Snippet 6: Sample thread waiting for DB Call to finish

The issue might be due to the database is receiving multiple SQL statements and SQL
statements are queued for processing. SQL statements are executed in the database quickly but
every client is using the shared connection, a SQL statement gets executed only when it gets
resources. In this scenario, AWR report will not be true depiction of actual timings. AWR report
depicts the actual query execution time not the waiting time due to shared connection.
If AWR report depicts that SQL statement execution is sufficiently fast but WLS threads are
waiting for database calls to finish, try dedicated mode.
Dedicated mode setting can be done on server as well as client side.

For client side, add the property ServerType=dedicated in the connection pool
For server side take help DBA
39

Database server should be ready to accept dedicated connection only then ServerType =
dedicated makes sense.
Any changes to datasources properties require server restart.

5 Reference
1. WebLogic Server Performance And Tuning:
http://docs.oracle.com/cd/E13222_01/wls/docs100/perform/index.html
2. Oracle Fusion Middleware Performance and Tuning for Oracle WebLogic Server:
http://docs.oracle.com/cd/E28280_01/web.1111/e13814/toc.htm
3. Oracle Fusion Middleware Configuring and Managing JDBC Data Sources for Oracle
WebLogic Server: http://docs.oracle.com/cd/E23943_01/web.1111/e13737/toc.htm
4. Oracle Fusion Middleware Introduction to Oracle WebLogic Server:
http://docs.oracle.com/cd/E23943_01/web.1111/e13752/toc.htm
5. Oracle Database Administrator's Guide:
http://docs.oracle.com/cd/B28359_01/server.111/b28310/toc.htm

40

Vous aimerez peut-être aussi