62
“This presentation is for informational purposes only and may not be incorporated into a contract or agreement.”

Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Embed Size (px)

Citation preview

Page 1: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

“This presentation is for informational purposes only and may not be incorporated into a contract or agreement.”

Page 2: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

The following is intended to outline our general product direction. Itis intended for information purposes only, and may not be

incorporated into any contract. It is not a commitment to deliver anymaterial, code, or functionality, and should not be relied upon in

making purchasing decision. The development, release, and timingof any features or functionality described for Oracle’s products

remains at the sole discretion of Oracle.

Page 3: Performance Tuning for J2EE Applications Tier-By-tier by Oracle
Page 4: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Jonathan MaronConsultant MemberTech Staff

“This presentation is for informational purposes only and may not be incorporated into a contract or agreement.”

Page 5: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

PerformanceTuning for J2EEApplicationsTier by Tier

Page 6: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Agenda

• Background• Approach• J2EE Tier by Tier• Tuning• Scaling• Monitoring

Page 7: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Agenda

• Background• Approach• J2EE Tier by Tier• Tuning• Scaling• Monitoring

Page 8: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Performance Issues Abound!

2003 Wily Benchmark Survey shows• 60% of time Java applications fail to meet user

expectations• Only 42% of applications perform as planned during

deployment• 57% of application performance spent in data access

2004 Forrester• 66% of time developers find out about performance

problems from user calls!

Page 9: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

J2EE Application Complexity Enterprise

Information Systems Client Side

Presentation

DesktopJava

Application

Device

J2EEClient

Browser

PureHTML

JavaApplet

J2EEPlatform

Web Server

Server-SidePresentation

JSP

Servlet

JSP

J2EEPlatform

EJB Container

Server-SideBusiness Logic

EJB

EJB

EJB

Page 10: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

“Premature optimization is theroot of all evil”- Professor Sir Charles Anthony

Richard Hoare

“There are two rules for when tooptimize:

1. Don't do it.2. (For experts only) Don't do it

yet.”

- Michael Jackson, Principles ofProgram Design

Page 11: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

“Test driven design can lead toemergent optimization and code thatis readily optimizable. If programmers

develop test first, many of theirupfront concerns about performance

can be deferred.”

- Michael Feathers, EmergentOptimization in Test Driven Design

Page 12: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

What is Performance Tuning?

• Anticipate Performance Requirements• Balance cost and benefits of optimal

performance• Optimize

• Response time• Throughput• Wait time

Page 13: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Agenda

• Background• Approach• J2EE Tier by Tier• Tuning• Scaling• Monitoring

Page 14: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Methodical approach toperformance evaluation

DevelopDevelop

IdentifyIdentify

DesignDesignTestTest

EvaluateEvaluate

Page 15: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Know your application

• J2EE (which components?)• JDBC (which datasource class?)• SSL?• Single Sign On?• …

Page 16: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Approach Tuning IssuesLogically and Iteratively

Java Virtual Machine

Application Server

Hardware and Operating System

Applications

Component

Database

Tuning and debugging are ongoing iterative processes. There are no magic bullets.

Page 17: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Agenda

• Background• Approach• J2EE Tier by Tier• Tuning• Scaling• Monitoring

Page 18: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

J2EE Application Tuning Enterprise

Information Systems Client Side

Presentation

DesktopJava

Application

Device

J2EEClient

Browser

PureHTML

JavaApplet

J2EEPlatform

Web Server

Server-SidePresentation

JSP

Servlet

JSP

J2EEPlatform

EJB Container

Server-SideBusiness Logic

EJB

EJB

EJB

Page 19: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Tuning JDBC Performance:Start with the Obvious

• Use connection pooling• Connection objects are expensive• Tailor min and max connections to your

application• Avoid cycling physical database connections

• Look for database connections timing out• Tune statement caching

• Cache distinct SQL statements

Page 20: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Connection Pooling

RacingFacade

J2EE Container

• create• teamOrders• . . .

Application usesavailable connections

Con

nect

ion

Pool

ing

From

the

Con

tain

er

Page 21: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Toplink Indirection – Just in TimeReading

• Use of proxy to defer reading until required• Very valuable performance feature• Several Implementation Options

• Explicit proxy• Dynamic proxy (java.lang.reflect.Proxy)• Development time class enhancement (source or byte codes)• Dynamic class enhancement

Customer AddressValueHolder

List PhoneNumber

Page 22: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Tune Your SQL!

• Easier said than done• What is the real SQL running in CMP EJB?

• Look at the SQL on the wire• Tools like P6Spy, Oracle Enterprise Manager

• Minimize database calls• Toplink Indirection, join reading, and batch reading

reduces DB round-trips• Become good friends with your DBA

• Tune using traditional techniques• Explain plan• Tools like SQLPlus and Oracle9i JDeveloper

Page 23: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

D E M O N S T R A T I O N

JDBCPerformance

Page 24: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

J2EE Application Tuning Enterprise

Information Systems Client Side

Presentation

DesktopJava

Application

Device

J2EEClient

Browser

PureHTML

JavaApplet

J2EEPlatform

Web Server

Server-SidePresentation

JSP

Servlet

JSP

J2EEPlatform

EJB Container

Server-SideBusiness Logic

EJB

EJB

EJB

Page 25: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

EJB - Locking-Mode andIsolation

• Pessimistic locking is generally slower• May be required for applications where data

collisions are likely• Increasing isolation decreases performance

• Evaluate your data consistency requirements

Page 26: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Transactions and Performance

• Entity beans load/store data at transactionboundaries

• Transactions settings affect how often databaseis accessed

• Poor performance can be caused by transactionsettings

• Rules of thumb• Always use transactions for entity bean methods• Scope the unit of work from a session bean

Page 27: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Session Bean - Tx:NoneEntity Bean - Tx:Required

TopicSessionFacade

•createTopicSet•printTopicSet•deleteTopicSet

Topic

•create•findBy•getTopicId•getTopicDesc•getTopicName•setTopicId•setTopicDesc•setTopicName

tx:None tx:Required

System.out.println(“<Create Test>");for(int i=0;i<3;i++){ TopicLocal topic = topicHome.create( new Integer(i),("topic " + i)); topic.setDesc("desc" + i);}System.out.println(“</Create Test>");

Page 28: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Resulting Transactional Activity<Create Test>TopicBean: ejbCreate id = 0TopicBean: ejbStore id = 0TopicBean: ejbLoad id = 0TopicBean: ejbStore id = 0TopicBean: ejbCreate id = 1TopicBean: ejbStore id = 1TopicBean: ejbLoad id = 1TopicBean: ejbStore id = 1TopicBean: ejbCreate id = 2TopicBean: ejbStore id = 2TopicBean: ejbLoad id = 2TopicBean: ejbStore id = 2</Create Test>

Tx create

Tx setDesc

Tx create

Tx setDesc

Tx create

Tx setDesc

Requires:12 lifecycle

calls

Page 29: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Session Bean - Tx:RequiredEntity Bean - Tx:RequiredTopicSessionFacade

•createTopicSet•printTopicSet•deleteTopicSet

Topic

•create•findBy•getTopicId•getTopicDesc•getTopicName•setTopicId•setTopicDesc•setTopicName

tx:Required tx:Required

System.out.println(“<Create Test>");for(int i=0;i<3;i++){ TopicLocal topic = topicHome.create( new Integer(i),("topic " + i)); topic.setDesc("desc" + i);}System.out.println(“</Create Test>");

Page 30: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Resulting Transactional Activity

<Create Test>TopicBean: ejbCreate id = 0TopicBean: ejbCreate id = 1TopicBean: ejbCreate id = 2</Create TestTopicBean: ejbStore id = 0TopicBean: ejbStore id = 1TopicBean: ejbStore id = 2

Tx : createTopicSame code:6 lifecycle

calls

Page 31: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Take Advantage of Your EJBContainer Configuration

Specifies how long to keep stateless sessions cached in the pool.StatelessSession

pool-cache-timeout

Specifies whether the container updates only modified fields or all fieldswhen ejbStore is invoked. Default true.

CMPupdate-changed-fields-only

Set to false to avoid the extra select before insert (checks if entity alreadyexists before doing the insert). Detects a duplicate during insert.

CMPdo-select-before-insert

max-tx-retries

Specifies the maximum time to wait for any resource that the EJB containerneeds before the container calls the EJB method (excluding DB).

Session &Entity

call-timeout

Performance Characteristic ImpactedTypeExampleParameter

Session &Entity

Specifies the number of times to retry a transaction that was rolled back dueto system level failures.

Page 32: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

D E M O N S T R A T I O N

EJB Tuning

Page 33: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

J2EE Application Tuning Enterprise

Information Systems Client Side

Presentation

DesktopJava

Application

Device

J2EEClient

Browser

PureHTML

JavaApplet

J2EEPlatform

Web Server

Server-SidePresentation

JSP

Servlet

JSP

J2EEPlatform

EJB Container

Server-SideBusiness Logic

EJB

EJB

EJB

Page 34: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Tuning Servlet Performance:Load on Startup

• Increases application start-up time butdecreases first-request latency for servlets

• How?• Add <load-on-startup> sub-element inhttp-website.xml to load the entire webmodule on startup

• Add <load-on-startup> sub-element to the<servlet> element in web.xml to load theservlet on startup

Page 35: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Tuning JSP Performance:Pre-Translation

• Pre-compile JSPs into .class files ahead oftime

• In Oracle Application Server, ojspc providesthis functionality

• jsp, and .java• Batch compilation of war, jar, ear and zip files

% ojspc -dir /myapp/mybindir -srcdir/myapp/mysrcdir MyPage.sqljsp MyPage2.jsp

% ojspc -deleteSource myapp.war

Page 36: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Use HTTPSessionAppropriately• Minimize the objects you store in HTTPSession

• Takes up memory• Expensive serialization/deserialization if you use

persistence/replication• Use transient variables to reduce serialization

overhead

• Reduce default session timeout by usingHttpSession.setMaxInactiveInterval()

• Remove session objects when no longer in use

• Use <% @ page session="false"% > in JSP pageswhere you do not need a session

Page 37: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

D E M O N S T R A T I O N

Web Tier

Page 38: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Agenda

• Background• Approach• J2EE Tier by Tier• Tuning• Scaling• Monitoring

Page 39: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

J2EE Application Tuning Enterprise

Information Systems Client Side

Presentation

DesktopJava

Application

Device

J2EEClient

Browser

PureHTML

JavaApplet

J2EEPlatform

Web Server

Server-SidePresentation

JSP

Servlet

JSP

J2EEPlatform

EJB Container

Server-SideBusiness Logic

EJB

EJB

EJB

Page 40: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Look for Bottlenecks withLoad Testing Tools

• Mercury Loadrunner• Open source

• Apache JMeter• Grinder

• Altaworks Panorama• …

Page 41: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Threads – more aren’tnecessarily better!

• The optimum number of threads required willprobably vary based on application makeupand load

• Reduction of thread contention is key• Iterative process

• Don’t get discouraged!

Page 42: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

More threads – morecontention!

Transactions Per Second

0

50

100

150

200

250

300

2 4 8 16 32 64

Max Executor Pool Threads

Thread Group Lock Contention

0.00%

5.00%

10.00%

15.00%

20.00%

25.00%

30.00%

35.00%

40.00%

45.00%

50.00%

2 4 8 16 32 64

Max Executor Pool Threads

Thread Group CPU

0.00%

2.00%

4.00%

6.00%

8.00%

10.00%

12.00%

14.00%

16.00%

18.00%

2 4 8 16 32 64

Max Executor Pool Threads

Thread Group Waiting

0.00%

5.00%

10.00%

15.00%

20.00%

25.00%

30.00%

35.00%

40.00%

45.00%

50.00%

2 4 8 16 32 64

Max Executor Pool Threads

Page 43: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Objects – be economical!• Object creation is expensive

• Especially exceptions• Assess whether unnecessary object creation

is occurring

Page 44: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

JVM Tuning

• A number of hotspot VM options are availablefor tuning

• -Xms, -Xmx, -Xmn, -XX:SuvivorRatio,…• Some platform vendors provide additional

options• HP: -XX:+ForceMmapReserved

• Some platforms are not properly tuned out ofthe box for Java processing

Page 45: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Garbage Collection

• Change the JVM Heap size• java –jar –Xms256m –Xmx256m oc4j.jar

• Monitor collection cycles• verbose:gc• Profiling of heap

• JDK 1.5 Jconsole• Intel Vtune• HPJtune• . . .

Page 46: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

D E M O N S T R A T I O N

JVM Tuning

Page 47: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Agenda

• Background• Approach• J2EE Tier by Tier• Tuning• Scaling• Monitoring

Page 48: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Sizing

• Sizing or Capacity Planning relates to either• How many system resources are needed to

accommodate users• How many users can be accommodated given a

particular system• Sizing in relation to Performance, Scalability,

and Stress

Page 49: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Sizing and Scalability

•Scalability•The ability of a system toexpand, accommodatingincreased load with littleor no effect onperformance

Page 50: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Sizing Goals

• What are generally the goals leading to asizing exercise?

• Expected system throughput• Operations per time interval (e.g., Hits/sec,

Transactions/sec, Messages/sec)• Total of concurrent users• Maximum response time• Application size

Page 51: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Sizing Methodology

• Decide on a test hardware configuration thatcan be scaled

• Simulate sequence(s) of typical user actions• Application specific• Time-of-day specific

• Apply varying load to the system• Use an appropriate load generation software

(e.g, Mercury LoadRunner, JMeter, etc.)

Page 52: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Sizing Methodology

• Scale hardware if needed to accommodateload

• Stop when your defined criteria threshold ismet

• Number of operations per time interval• Number of concurrent users• Maximum response time

• Iterate to optimize performance by tuning andadjusting the configuration parameters

Page 53: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Agenda

• Background• Approach• J2EE Tier by Tier• Tuning• Scaling• Monitoring

Page 54: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Performance Monitoring

• Optimization doesn’t end withdeployment

• Monitoring tools key to continuedapplication responsiveness

• Oracle Enterprise Manager• HP OpenView

Page 55: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Oracle Enterprise Manager

Page 56: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Features: Grid Control

• Application Server Discovery• Application Server Home Page• Out-of-box Monitoring• Historical Collections & Analysis• Consolidated Group Management• J2EE Application Diagnostics• Application Service Level Management• Configuration Management

Page 57: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Application Server Home Page

Page 58: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Final Thoughts

• Do not optimize prematurely• E.g. an object pool is not always faster

• Performance tuning is an iterative process• Do not add threads haphazardly• Exceptions are expensive

Page 59: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Next Steps• Recommended Parallel Sessions

• Simplify System Monitoring, Using Oracle Enterprise Manager 10g,Monday @ 1:30 pm in Room 302 South

• Leveraging Advanced Features of Oracle Database in J2EE, Thursday@ 10:30 am in Room 308 South

• Related Demos/Exhibits• Enterprise Manager, Toplink, and Oracle Container for J2EE (OC4J) pods

located in Exhibit Hall• Related Web Sites For More Information

• http://www.oracle.com/technology/products/oem/as_mgmt/index.html• http://download-

west.oracle.com/docs/cd/B14099_11/core.1012/b14001/toc.htm• http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html

Page 60: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

Shameless Self Promotion

•From amazon.comreviews:

•“Required EnterpriseTransactions Reading”•“All J2EE developersshould read this book”

Page 61: Performance Tuning for J2EE Applications Tier-By-tier by Oracle

AQ&Q U E S T I O N SQ U E S T I O N SA N S W E R SA N S W E R S

Page 62: Performance Tuning for J2EE Applications Tier-By-tier by Oracle