Contents
Preface
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . xiii
Intended
Audience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . xv
Acknowledgments
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
xvii
Introduction
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 1
Layout
of Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 7
The
challenges. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 9
Environmental
Shifts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 9
Business
Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 9
Organizational
Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 11
Consequences
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 12
Production
Changes Cost More . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 12
Vertical
Teams Lack Breadth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 13
Process
is an Afterthought . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 13
Which
Process? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 14
Build
Versus Buy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 15
Buy
More Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 16
Hire
More Employees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 17
Return
on Investment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 17
When
All Else Fails, Kill It . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 18
Complexity
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 18
Common
Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 19
Documentation
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 20
Tribal
Knowledge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 20
Manual
Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 21
Give
Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 22
Outsource
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 22
The
Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 25
Solvable
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 25
Lay
the Technical Foundation . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 26
Understand
the Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 27
Think
about the Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 27
Build
Your Documentation Plan . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 28
Manage
the Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 29
Incorporate
Best Practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 29
Perfect
the Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 31
How
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 31
Fundamentals
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . 33
Fundamental
#1: Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 33
Fundamental
#2: Application Server . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 34
Fundamental
#3: Understand the Operating System . . . . . . . . . . . . . . . . . . . . . .
. 35
Fundamental
#4: Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 36
Fundamental
#5: Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 37
What
is an application server . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 39
Containers
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 41
Getting
to Know the Components . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 42
Components
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 43
J2EE
Connector Specification 1.5 (J2EE Connectors) . . . . . . . . . . . . . . . . .
. . . . 43
J2EE
Management Specification (JMX) . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 44
Enterprise
Java
IDL API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 45
Java
Naming and Directory Interface (JNDI) Specification 1.2.1 . . . . . . . . . . .
. . 45
Java
Message Service (JMS) Specification . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 45
Java
Servlet Specification (servlets) . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 46
Java
Transaction API (JTA) Specification . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 46
JDBC
Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 46
Java
Server Pages (JSP) Specification . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 47
RMI/IIOP
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 47
Contents
vii
Components
That Drive the SOA Initiative . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 47
Java
API for XML Registries Specification 1.0 . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 48
Java
API’s for XML/SOAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 48
Designing
an application for success . . . . . . . . . . . . . . . . . . . . . . . . . .
. 49
Why
Design Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 49
Plan
for Failure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 50
Reach
Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 50
Physical
Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 51
Production
Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 52
Service
Level Agreements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 53
Web
Metrics Are Inaccurate . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 53
Build
Process In . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 54
Evolve
or Die . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 55
Application
Traits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 55
Developing
Quality Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 56
Standards
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 56
Copy
and Paste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 57
Code
Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 58
Dependent
Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 58
Some
Common Architectural patterns . . . . . . . . . . . . . . . . . . . . . . . . .
59
Some
Architectural Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 59
MVC
Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 60
Client-Server
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 61
N-tier
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 61
Service-oriented
architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 61
Common
Design Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 62
Why
Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 63
MVC
in Practice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 63
Service
Locator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 64
Singleton
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 65
Frameworks
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 66
Struts
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 67
viii Affinity
Application
Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
Stabilize
the Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 69
Lock
Down the Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 70
Repeatable
Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 70
Automation
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 71
Plan
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 72
Implementation
Plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 72
Always
Have a Backup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 73
Source
Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 75
Configuration
Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 75
Application
Deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 76
Kitchen
Sink JARs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 76
Minimize
the Footprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 77
Text
Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 78
Build
the Application Locally . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 78
Automate
Builds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 79
Automate
Your Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 80
Cluster
Early . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 81
Document
the Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 82
Targeted
Training . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 83
Load
testing for success . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 85
Load-Test
Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 85
Determine
What You Are Going to Test . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 86
Customer-Usage
Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 86
Generating
the Load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 86
Load-Test
Goals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 87
Bench
Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 89
Performance
Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 90
Endurance
Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 90
Destructive
Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 91
Common
Issues in Load Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 91
Production
Load Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 92
Lessons
Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 92
Contents
ix
Identify
Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 93
Load-Test
Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 93
Common
areas to watch out for . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . 95
Remote
Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 95
Deployment
Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 95
Session
Replication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 96
Deployment
Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 96
Automate
Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 97
Load
Balancers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 97
Affinity
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 98
Sticky
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 99
EJB
Load Balancing Versus Servlet . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 99
Dynamic
versus Static Content . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 100
Routing
Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 101
Round-Robin
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 101
Server
Availability and Application Availability . . . . . . . . . . . . . . . . . . .
. . . . . . . 101
Cluster
Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 102
Large
Versus Small Clusters . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 103
Multiple
Applications One Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 103
Decouple
Business from Presentation . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 104
Globally
Distributed Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 105
Business
Logic Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 105
Database
Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 106
Production
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 109
Do
You Know What Your Servers Did Last Night? . . . . . . . . . . . . . . . . . .
. . . . . 109
Do
You Know What Your Employees Did Last Night? . . . . . . . . . . . . . . . . .
. . . 110
Four
9s is Difficult . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 110
Ex
Post Facto (After the Fact) . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 111
Ad
Hoc Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 112
Root
Cause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 112
Monitoring
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 113
Determine
Who Has Access to Production . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . 114
Unauthorized
Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 115
Controlled
Chaos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 116
Multi-Homing
Your Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 117
Log
Level for Production . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 117
Monitoring
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 118
Large
Cluster Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 119
Centralized
Administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 121
TroubleShooting
the issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Troubleshooting
101 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 123
Where
to Start Looking for Trouble . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 123
Ask
the Right Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 124
Memory
or Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 125
Differences
between Environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 125
Load
Balancer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 125
Java
Virtual Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 126
Threads
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 127
Context
Switching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 128
Operating
Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 128
Java
Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 129
Disks
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 129
Threads
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 129
Search
Engines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 130
Involve
the Vendors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 131
Escalate
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 132
The
War Room . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 132
Performance
Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 135
Basics
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 135
Common-Denominator
Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
136
Bottleneck
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 137
Validate
before Making the Change . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . 138
Outside
the Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 139
Less
is More . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 139
Out-of-the-Box
Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 140
Metrics
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 141
Contents
xi
Baseline
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 142
Tools
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 142
Network
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 143
Disk
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 143
CPU
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 144
Memory
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . 144
Java
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 145
Java
Virtual Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . 145
Log
Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 146
EJB
Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 147
MTU
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 148
Session
Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 149
Web
Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 150
Performance
Recommendations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 151
Coarse-Grained/Fine-Grained
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
152
Summary.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 153
High-Performance
Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 153
Keys
to Success . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . 154
Where
to Focus Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 154
Performance
Factors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . 155
The
Right Engineer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . 155
Closing
Thoughts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . 156
References
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 157
Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159