-
1DB2 WebSphere Integration Best Practice
Peter ShumIBM Toronto Laboratory
07 November 2007 5:30 p.m. 6:30 p.m.Platform: Linux, Unix,
Windows
Session: F13
In many DB2 shops, more and more solutions are based on
WebSphere Application Server and yet there is a limited
understanding on how WebSphere and DB2 interact with each other
beyond just the SQL. In this session, we'll walk through the
architecture of WebSphere, the flow of a query, and then identify
the best practice for monitoring, configuration, and application
when interfacing with DB2.
-
2IBM Software Group
2003 IBM Corporation2
Agenda
Architecture Overview Performance Monitoring Best Practice
Configuration Best Practice Application Best Practice Miscellaneous
Whats Coming
-
3IBM Software Group
2003 IBM Corporation3
Disclaimer
The information in this presentation concerns new products that
IBM has announced. The specification of some of the features
described in this presentation may change before the General
Availability date of these products. Any discussion of non-IBM
products is based upon information which has been publicly
available and is subject to change
REFERENCES IN THIS PUBLICATION TO IBM PRODUCTS, PROGRAMS, OR
SERVICES DOES NOT IMPLY THAT IBM INTENDS TO MAKE THESE AVAILABLE IN
ALL COUNTRIES IN WHICH IBM OPERATES
IBM MAY HAVE PATENTS OR PENDING PATENT APPLICATIONS COVERING
SUBJECT MATTER IN THIS DOCUMENT. THE FURNISHING OF THIS DOCUMENT
DOES NOT IMPLY GIVING LICENSE TO THESE PATENTS.
TRADEMARKS AND REGISTERED TRADEMARKS ARE THE PROPERTY OF THEIR
RESPECTIVE COMPANIES
-
4IBM Software Group
2003 IBM Corporation4
Architecture Overview
Acknowledgment: Diagrams in this section were taken from the DB2
UDB/WebSphere Application Server V6 Performance Tuning and
Operations Workshop, by ITSO
-
5IBM Software Group
2003 IBM Corporation5
J2EE Architecture
Note the 4 components: client, web container, EJB container, and
the datasource (i.e. database).The J2EE platform specification
describes the run-time environment for a J2EE application. This
environment includes application components, containers, and
resource manager drivers. The elements of this environment
communicate with a specified set of standard services.J2SE Java 2
Platform, Standard Edition provides a complete environment for
applications development on desktops and servers and for deployment
in embedded environments. It also serves as the foundation for the
Java 2 Platform, Enterprise Edition (J2EE) and Java Web
Services.RMI-IIOP Remote Method Invocation Internet Inter-Orb
Protocol delivers Common Object Request Broker Architecture (CORBA)
distributed computing capabilities to the Java 2 platform.JDBC Java
Data Base Connectivity is an API (included in both J2SE and J2EE
releases) that provides cross-DBMS connectivity to a wide range of
SQL databases and access to other tabular data sources, such as
spreadsheets or flat filesJMS Java Message Service provides a
standard Java-based interface to the message services of a
Message-Oriented-Middleware (MOM) of some other provider.JNDI Java
Naming and Directory Interface is part of the Java platform,
providing applications based on Java technology with a unified
interface to multiple naming and directory servicesJAF Java Agent
Framework builds upon the Java Beans model by supplying a
b f f iliti d i d t k t d l t d t
-
6IBM Software Group
2003 IBM Corporation6
WebSphere Appl. Server Architecture (Standalone)
Web container
Application Server
Messaging engines
Node
Adm
inap
plic
atio
n
Application Database
W ebcontainer Inbound chain(
EJB container
JCA services
Config repository (XML files)
Name Server (JNDI)
Security server
appl
icat
ion
(EA
R)
Msg Queue
Msg Queue
manages
managed by external provider
(W ebSphere MQ)Web Services engine
Adm
in s
ervi
ce
JMS, MQ
W eb Service Provider or Gateway
SOAP/HTTP
W eb browser
client
Java client
Client container
HTTP server
W ebSphere plug-in
HTTP(s)
Scripting client
Admin UI
RMI/IIOP
SOAP or RMI/IIOP
HTTP(s)
UD
DI r
egis
try
In WebSphere, you still have the 4 major components of client,
web container, EJB container, and databasource. However, many of
the services are shared by both the web container and EJB
container. WAS components for standalone are:Node - Logical
grouping of server processes managed by WebSphere that share a
common configuration and operational control -- not necesarily a
machineApplication server (instance) - One JVM processWeb container
and EJB container - Can be separated but is not recommended due to
negative performance impactJNDI and Security services
Administrative service - One in each JVM. Manipulates application
server configurationAdministrative Console - Web administration
interface. Connected through an admin application to the Admin
serviceConfiguration repository - No database, but XML file.
Contains configuration informationWeb server and Web server plug-in
- Accepts requests from clients. If rule describes, forwards
request to application server plugin-cfg.xmlEmbedded HTTP transport
- Located in Web container. Receives requests from plug-in.
HTTP/HTTPS communication with plug-in. Forwards requests to
servletsEmbedded Messaging (JMS) Server - Point-to-point and
publish/subscribe
i i N t i W bS h E
-
7IBM Software Group
2003 IBM Corporation7
WebSphere Appl. Server Architecture (w/ Dist. Server)
EJB container
Web container
Application Server
Node Agent
Node
Application Database
UD
DI r
egis
try
Adm
in s
ervi
ce
Config repository
(file)
appl
icat
ion
(EA
R)
Webcontainer Inbound chain(s)
SOAP (Web
Services) engine
Cell
Master repository
(file)
Deployment ManagerAdmin
applicationName Server (NDI)
Admin Service
Admin Service
Session Database
Web browser
client HTTP server
WebSphere plug-in
HTTP(s)
Scripting client
Admin UI
Java client
Client container RMI/IIOP
SOAP or RMI/IIOP
HTTP(s)
WAS components for cluster are:Administrative cell - Several
nodes in a single administration domain.Server cluster - Identical
application(s) on several nodes. Purpose: workload management,
failover, etc. Application servers in a cluster are called
"members" and part of the same administrative cell - Can span
distributed platform nodes --but NOT distributed and z/OSDeployment
Manager - Central point of administration. Manages the entire
cell's configuration repository. Required for both horizontal and
vertical scalingNode Agent - Communicates directly with Deployment
Manager. Used for configuration synchronization and administration
tasks. Located in application server instanceNode group - A node
group is a new concept introduced with WebSphere Application Server
V6. A node group is a grouping of nodes within a cell that have
similar capabilities. A node group validates that the node is
capable of performing certain functions before allowing those
functions. A DefaultNodeGroup is automatically created based on the
deployment manager platform. This node group contains the
deployment manager and any new nodes with the same platform
type.Node can be part of multiple node groups (except in the case
of z/OS sysplexgroups)Plus the WAS components for standalone.Web
administration interface - In Network Deployment - connected to
Deployment ManagerConfiguration repository - No database but XML
file Contains configuration
-
8IBM Software Group
2003 IBM Corporation8
Typical Query Flow
DB2application database
Browser Client
output page
input page
HTML HTML 1
2
3
plug-in 4
13 14
5
Web Container
Servlet
JSP
EJB Container
JNDI
Data Sources
EJB
WebSphere Application Server
7 8a
8b 9 10a 12
6
10b 11
Embedded HTTP Server
EnterpriseJava Bean
Web Server
Even though the full architecture of a J2EE system could be
quite complicated, we could still simplify the basic and typical
query flow to make it easier to understand how it works for
database requests.
1. A Web client requests a URL in the browser (input page).2.
The request is routed to the Web server over the Internet.3. The
Web server immediately passes the request to the WebSphere
plug-in.
All requests go to the WebSphere plug-in first.4. WebSphere
plug-in examines the URL, verifies the list of hostname aliases
from which it will accept traffic based on the virtual host
information, and chooses a server to handle the request.
5. A stream is created. A stream is a connection to the Web
container. It is possible to maintain a connection (stream) over a
number of requests. The Web container receives the request and
based on the URL, dispatches it to the proper servlet.
6. If the servlet class is not loaded, the dynamic class loader
loads the servlet. Servlet init(), then doGet() or doPost().
7. JNDI is now used for lookup of either datasources or EJBs
required by the servlet. Depending upon whether a datasource is
specified or an EJB is requested,the JNDI will direct the
servlet:
8. a) To the corresponding database, and get a connection from
its connection pool in the case of a datasourceb) To the
corresponding EJB container, which then instantiates the EJB, when
an EJB is requested
-
9IBM Software Group
2003 IBM Corporation9
Multiple Caching Tiers and Caches Browser cache Web
Container
Static file cache Dynamic cache (includes Servlet/JSP result
caching) Edge Side Includes (ESI) Web Service Call results
EJB Container Command cache Java Object cache JNDI cache EJB
caching
Application Server-to-Database Layer Connection pool Prepared
statement cache
Database Buffer Pool Catalog Cache Package Cache
Browser cache -- good for only one user -- minimal reuseStatic
file cache --HTML, GIF, JPEG, CSS, JavaScript for example. These
are cached via several means -- browsers, web servers, proxy
servers, WAS plugin, or WAS externally as remote cache adapters
Dynamic cache -- saving some runtime result (either ar the
presentation or business logic tier). Technology developed for
massive highly dynamic distributed sitesServlet/JSP result caching
-- page fragment or full page responses from Servletor JSP
execution cached as HTMLEdge Side Includes (ESI) -- a simple markup
language for dynamic page assembly at the edge, included in WAS V5
pluginWeb Service Call results -- SOAP results from web services
call are cached thereby saving expensive marshalling and XML
parsingCommand cache -- cached results from execution of some
complex or intensive command -- resulting object/collection
cachedJava Object cache -- specific objects/collections directly
cachedJNDI cache -- all or part of WAS JNDI namespace can be cached
on startup. Allows customer code for caching of JNDI lookups to be
removed to simplify code, or to improve perfromance if you did not
follow that practiceEJB caching -- the EJB container has several
options available for caching stateful session bean homes and
entity bean instances between transactions. CMP beans are cached
and managed by the WAS Persistence Manager -- in WAS V6 stateful
session beans and entity bean persistence manager cache now
replicated
-
10
IBM Software Group
2003 IBM Corporation10
Follow the Query Flow into DB2
MAXAPPLSMAXAGENTSMAX_COORDGENTSMAX_POOLAGENTS
Listener
SA
appl heapsort heapstmt heapstat heap
agent stackquery heap
CA
db2tcpcmdb2ipccm
Obtaintoken
from DBM
MAX_CONNECTIONS
LA
Dispatcher
Agent Pool
ApplheapszAppgroup_mem_szGroupheap_ratioAppl_ctl_heap_szSortheapStmtheapStat_heap_szAgent_stack_szQuery_heap_szdbheap
Aguire memory +token
Client
catalog cache
package cachecatalogcache_szpkcachesz
DMS
RDS
Table/Index Manager
locklistMAXLOCKS
MINCOMMITlogbufsz
DPS Acquirelogging
BPM Sync/Async I/O ManagerSort
over flow
Temp Index Data Log
Operation System Services (OSS)
Buffer Pool
Prefetcherqueue
Sort
sortheapsheapthres_shrsheapthres
CHNGPGS_THRESHNUM_IOSERVERSNUM_IOCLEANERSSOFTMAX
DPS Acquirelock
MAXCAGENTS
LEGENDLogical Agent (Application)Coordinator
AgentSubagentRelational Data ServicesData Management ServicesData
Protection ServicesBuffer Pool Manager
LACASARDSDMSDPSBPM
locklist
logbuffer
THIS FOIL SHOWS CONNECTION CONCENTRATOR ENABLED. (It is usually
disable when supporting appl servers.)Every transaction or query
begins with a connect to the database, followed by one or more SQL
statements, and ending with a commit and disconnect from the
database.
The following series of interactions occur in DB2 as described
during the execution of a typical transaction with connection
concentrator enabled:When the application issues a connect to a
database, the appropriate DB2 listener task (db2tcpcm, or db2ipccm)
creates a logical agent which is a representation of a client
connection to the database, if the creation does not exceed the
limit specified by the max_connections database manager
configuration parameter.
If the max_connections limit would be exceeded by the creation
of this logical agent, then an error code SQL1226N is returned to
the application.
When the first SQL call is issued by the application, the
following occurs:The dispatcher (db2disp) associates a coordinator
agent (if one is available) with the logical agent created and its
application group applications always belong to a particular
application group, which is the logical representation of a set of
shared resources (shared that is between applications within that
application group). The coordinator agent process will then serve
requests on behalf of the application for the duration of a single
transaction.The coordinator agent may be created if
f th t l t b d i th t th ti f
-
11
IBM Software Group
2003 IBM Corporation11
Monitoring and Diagnostic Best Practice
-
12
IBM Software Group
2003 IBM Corporation12
Top 10 Monitoring List for WebSphere
Servlets and EJBs1. Average Response Time
2. Number of Requests
3. Concurrent Requests
4. Web Server Threads
5. Web Container Thread Pool 6. Data Source Connection Pool
7. Java Virtual Machine Memory
HTTP
JDBC
IIOP
Web Server Web Container EJB Container Data Source
8. CPU 9. I/O10. Paging
DB
ORB
8. CPU 9. I/O10. Paging
8. CPU 9. I/O10. Paging
HTTP
Clients
Network
5. ORB Thread Pool
Because of the sheer magnitude of monitors and tuning
parameters, knowing where to start, what to monitor and which
component to tune first is hard. If you experience performance
problems, use TPV and walk through the top ten monitoring items
checklist
Consider the following:If you recognize something out of the
ordinary, for example, an over-utilized thread pool or a JVM that
spends 50% in garbage collection at peak load time, then
concentrate your tuning actions there firstPerform your examination
when the system is under typical production level load and make
note of the observed valuesAlternatively, save TPV sessions to the
file system, where the monitoring data will be stored for recurring
analysisKeep in mind that one set of tuning parameters for one
application will not work the same way for anotherUse the
Performance Advisors together with TPV
-
13
IBM Software Group
2003 IBM Corporation13
PMI Data
WebSphere Command
Beans
TradeDatabase
MessageServer
EJB Container
TradeSession
EJB
Entity 2.0 EJBs
QuoteCMP
AccountProfileCMP
AccountCMP
OrderCMP
HoldingsCMP
Pub/Sub
Web Container
Trad
eAct
ion
Trad
eSer
vice
s
TradeDirectJDBC
AuditorClient
Message EJBsTradeBroker
MDBStreamer
MDB
Topic
Queue
Web ServicesClient
TradeServletsTrade
Servlets
WebClient
JAX/RPC SOAPServlet
Web Services
TradeServletsTrade
JSPs
Joein action!
Web Applications Servlet/JSP response time Servlet/JSP
requests
Servlet Session Manager Avg # of active HTTP sessions Session
size
EJB Module EJB response time EJB requests
JDBC Connection Pools % pool in use Avg. wait time JDBC
times
JVM Memory Free memory # of garbage collection calls (JVMPI)
Thread PoolsWeb container and ORB Active threads % pool
maxed
Java Transactions # active transactions Avg duration
J2C Connection Pools # of managed connections Total # of
connectionsObject Request Broker (ORB) Object reference lookup time
# of requests
Web Services Gateway # of sync requests/responses # of async
requests/responses
System Data CPU Utilization Memory usage
Workload Management # of requests # of updates
Dynamic Cache Memory cache size # of hits/misses
Web Services # of loaded web services # of requests
delivered/processed
JVMIMS, CICS
1. There is a lot of data and we continue to create new data
points2. The need for tools/advisors become more
important/relevant3. Perf data is collected from the JDK, WAS
runtime & appls
The Performance Monitoring Infrastructure (PMI) uses a
client-server architecture. The server collects performance data
from various WebSphere Application Server components. A client
retrieves performance data from one or more servers and processes
the data.
(http://publib.boulder.ibm.com/infocenter/ws51help/topic/com.ibm.websphere.base.doc/info/aes/ae/cprf_requestmetrics.html)
Performance Monitoring Infrastructure (PMI) provides server-side
monitoring and a client-side API to retrieve performance data. PMI
maintains statistical data within the entire WebSphere Application
Server domain, including multiple nodes and servers. Each node can
contain one or more WebSphere Application Servers. Each server
organizes PMI data into modules and submodules.
-
14
IBM Software Group
2003 IBM Corporation14
WebSphere PMI Metrics of Interest
WebSphere Command
Beans
TradeDatabase
MessageServer
EJB Container
TradeSession
EJB
Entity 2.1 EJBs
QuoteCMP
AccountProfileCMP
AccountCMP
OrderCMP
HoldingsCMP
Pub/Sub
Web Container
Trad
eAct
ion
Trad
eSer
vice
s
TradeDirectJDBC
AuditorClient
Message EJBsTradeBroker
MDBStreamer
MDB
Topic
Queue
Web ServicesClient
(JAX/RPC)
TradeServletsTrade
Servlets
WebClient
JAX/RPC SOAP
ServletWeb Services
TradeServletsTrade
JSPs
Joein action!
WebSphere Command
Beans
TradeDatabase
MessageServer
EJB Container
TradeSession
EJB
Entity 2.1 EJBs
QuoteCMP
AccountProfileCMP
AccountCMP
OrderCMP
HoldingsCMP
QuoteCMP
AccountProfileCMP
AccountCMP
OrderCMP
HoldingsCMP
Pub/Sub
Web Container
Trad
eAct
ion
Trad
eSer
vice
s
TradeDirectJDBC
AuditorClient
Message EJBsTradeBroker
MDBStreamer
MDB
Topic
Queue
Web ServicesClient
(JAX/RPC)
TradeServletsTrade
Servlets
WebClient
JAX/RPC SOAP
ServletWeb Services
TradeServletsTrade
JSPs
Joein action!
Web Applications Servlet/JSP response time Servlet/JSP
requests
Servlet Session Manager Avg # of active HTTP sessions Session
size
EJB Module EJB response time EJB requests
JDBC Connection Pools % pool in use Avg. wait time JDBC
times
JVM Memory Free memory # of garbage collection calls (JVMPI)
Thread Pools Web container and ORB Active threads % pool
maxed
Java Transactions # active transactions Avg duration
J2C Connection Pools # of managed connections Total # of
connections
Object Request Broker (ORB) Object reference lookup time # of
requests
Web Services Gateway # of sync requests/responses # of async
requests/responses
System Data CPU Utilization Memory usage
Workload Management # of requests # of updates
Dynamic Cache Memory cache size # of hits/misses
Web Services # of loaded web services # of requests
delivered/processed
JVM
Available zOS 6.0Available as of 6.0Available zOS 5.0.2Available
as of 5.0.2Available zOS 5.0.1Available as of 5.0
Available zOS 6.0Available as of 6.0Available zOS 5.0.2Available
as of 5.0.2Available zOS 5.0.1Available as of 5.0
DCS # of messages sent/receivedTime spent synchronizing
HA Manager# of local groups# of bulletin-board subjects
For your reference a subset of the key ones and in which release
they become availalble.
-
15
IBM Software Group
2003 IBM Corporation15
PMI Predefined Statistic Sets (New in V6)
None All statistics are disabled
Basic Statistics specified in J2EE 1.4, and top statistics like
CPU usage and
live HTTP sessions are enabled Enabled by default; only 1-4%
overhead Provides basic performance data about runtime and
application
components Extended
Basic set plus key statistics from various components like WLM
and Dynamic caching; only 1-4% overhead
All All statistics are enabled; dangerous could have 35%
overhead
Use the Custom setting to define your own statistic set Enable
or disable statistics individually
-
16
IBM Software Group
2003 IBM Corporation16
Monitor WebSphere with TPV Tivoli Performance Viewer (TPV)
externalizes PMI metrics
and is part of WebSphere
This chart shows a view from the Tivoli Performance Viewer
whichdisplays the PMI data- this tool ships as part of WebSphere
Application Server. For those of you who used WAS 4.0, remember
that TivoliPerformance Viewer is the new name for Resource
Analyzer. You can view the data in tabular form or in graphical
form. On the graph you can also select which counters you want
displayed. This particular view is showing that there is a large
number of discards from the prepared statement cache. If the cache
were set to a larger size, you should see the discard rate reduced
and some performance gains as a result.
-
17
IBM Software Group
2003 IBM Corporation17
Performance Advisor in TPV
For details, go to
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/tprf_enablingtpvadvisor.html
For a demo, go to
http://publib.boulder.ibm.com/infocenter/ieduasst/v1r1m0/topic/com.ibm.iea.was_v6/was/6.0/Performance/WASv6_TPVPerformanceAdvisor.viewlet/WASv6_TPVPerformanceAdvisor_viewlet_swf.html?dmuid=20061227195912256394
This is a screen shot from the Performance Advisor in Tivoli
performance viewer. The section at the top is a blown up version
from the screen shot underneath. The advisor was run against an
internal application, and as you can see we received advice on how
to set the configuration for many of our Websphere parameters. Note
the highlighted message when you could be click on that msg.
[This particular customer doesnt have any simple config
problems; all of his warnings are of a 2a type]
Tuning strategyRun the performance advisorsDo what they
suggest
-
18
IBM Software Group
2003 IBM Corporation18
Performance Advisor in TPV
You get more details. This message specifically tells you that
the rate of discards from the preapred statement cach is high and
suggests to the user that the size of the cache be increased.
-
19
IBM Software Group
2003 IBM Corporation19
DB2 Snapshot Monitoring
Snapshots Most common DB2 performance diagnostic
Point-in-time data on database activity
Usually cumulative
Small volume of data produced
Often practical for ongoing monitoring
Which ones are useful?
-
20
IBM Software Group
2003 IBM Corporation20
S
Tables
A
A
Tablespaces
A
A
A
A
A
Mem
ory pools
S
S
S
CPU
utilization
S
Lock detail
A
A
A
A
SQL stm
t activity
A
A
A
Log usage
P
P
Dynam
ic SQL
A
A
A
A
A
Pkg/Sect/Cat
cache
A
A
A
A
Application
state
A
A
A
A
A
Row
s read/selected
A
A
A
A
Agents
S
S
S
S
S
S
S
S
Bufferpool &
I/O
PPdatabase
get snapshot for
dynamic sqllocks
tablespacestables
applicationsbufferpools
all
all
P
PP
PP
on
bufferpoolsPPapplicationsPPdatabasesPdatabase manager
Sorts
Lock summ
ary
Overhead: 3-5% overhead for most settings, 10% for all including
SQL snapshot, more if system is stressed (A always collected S
collected only when monitor switch is ON P collected when switch is
ON, partially collected when switch is OFF. )
What you can get
how to get it
and some prettyuseful
things
Monitor DB2 with DB2 Snapshot
This chart gives us a summary of what we can get (across the
top) and how to get it (down the left side.)
An A in the chart means the indicated information is always
collected, regardless of the state of monitor switches.P means the
data is partially collected (but to get all the information, you
need to have the appropriate switch turned on)S means that the data
is only available if the switch is on.
The green ellipses indicate especially useful areas, and are
what were going to focus on in the following slides.
-
21
IBM Software Group
2003 IBM Corporation21
DB2SystemMonitor Object (new for WAS v6.0)
The com.ibm.db2.jcc.DB2SystemMonitor interface is used for
collecting system monitoring data for a connection
WebSphere application generates monitor database activities: DB
system monitor data is broken up into the following four
areas: ServerTimeMicro time spent in the DB2 server
NetworkIOTimeMicros time spent in network (send/receive), and
DB2 server CoreDriverTimeMicros time spent in driver, network,
and DB2
server ApplicationTimeMillis time spent in application, driver,
network,
and DB2 server Back end independent.
See
http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/ad/rjvjdb2o.htm
-
22
IBM Software Group
2003 IBM Corporation22
Provide WebSphere Client Information to DB2 For WAS 5, set
client id, workstation name, appl name, and accounting
string as custom properties of datasource sent at first physical
connect.
db2 get snapshot for applications on .
TP Monitor Client User ID:WebSphere5-Userid
TP Monitor Client Workstation Name: WebSphere5-Wrkstn TP Monitor
Client Application Name: WebSphere5-Appl TP Monitor Client
Accounting String:
WebSphere5-Acct
-
23
IBM Software Group
2003 IBM Corporation23
Provide WebSphere Client Information to DB2
DB2 Connection annotation (WAS v6.0) Pass client info to DB2 on
each application connection
Can pass client info explicitly within application By calling an
IBM proprietary API, setClientInformation(Properties), on
the com.ibm.websphere.rsadapter.WSConnection object
More likely usage is to pass client info implicitly by setting
The WebSphere Trace group WAS.clientinfo=all=enabled Via the Admin
Console: Troubleshooting > Logs and Trace > pick the
server > Change log detail level > Configuration or Run
time > Trace Specification
See
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/rdat_impclientinfo.html
-
24
IBM Software Group
2003 IBM Corporation24
Provide WebSphere Client Information to DB2
DB2 Connection annotation (WAS v6.0)
For debugging purpose,
Set the WebSphere trace group WAS.clientinfopluslogging
This passes client info implicitly to DB2 and to log and trace
important application activities in WebSphere: SQL Strings that are
run (such as, select userId from tabl1
where id=? for update). Start, commit, and rollback of
transactions. EJB calls (such as, Create, Remove, findByPrimaryKey,
and so
on)
See
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/rdat_impclientinfo.html
-
25
IBM Software Group
2003 IBM Corporation25
Request Flow, Error Logs and traces Web Server Logs (1)
/logs/access.logs, /logs/error.log
Plug-in Logs (1) Native.log
Application Server Logs (2+3) SystemOut.log, SystemErr.log
Components (2+3) WebSphere Diagnostic Trace
DB2 JDBC Driver (4) JDBC, CLI, or universal driver trace
DB2 Server db2diag.log instance.nfy or Windows event log
DB2 trace
browser
Java App
HTTP Server
1a
1b
1c
1b+
Data Provider
EJB Cont-ainer
Application Server
WebCont-ainer
JDBC Drivers
2
3
3a
4
DB2
When there are performance or functional problems, it helps to
check the various error logs and traces.
Usually start with the WebSphere SystemOut.log and the DB2
db2diag.log to see if there are any errors.
The WebSphere Diagnostic Trace is the equivalent of DB2 Trace
for WebSphere. It can filter by runtime component, package name, or
on message type: entry/exit, event, info, debug. The output is sent
to circular in-memory buffer or trace file.
In addition, it can also control tracing of application
components. Application must make use of WebSphere's JRAS
implementation either directly or through Jakarta Commons Logging
mechanism. The trace can filter by application package name. The
benefit is that the control of application logging is then an
extension of controlling the runtime logging.
-
26
IBM Software Group
2003 IBM Corporation26
Log files Interpretation
By looking at the log files, you can always reduce down to at
least where the problems are!!
Where is the problem? or Where is NOT the problem? When in
doubt, start with the WebSphere SystemOut.log and
the DB2 db2diag.log Usually reports the error in stack trace or
Exception format
Good to trace back where the problem FIRST occurred WebSphere
log can capture DB2 JDBC driver trace WebSphere traces includes DB2
Correlater to correlate db2diag log
transaction entries with WAS traces
-
27
IBM Software Group
2003 IBM Corporation27
Enabling DB2 JDBC JCC Trace from WebSphere
Go to Resources > JDBC Provider > Data Sources >
Additional Properties > Custom Properties:
Specify traceLevel -1 to TRACE_ALL
Leave the traceFile property blank to embed the JCC trace points
inside the WebSphere trace automatically.
The trace setting is enabled or disabled dynamically the next
time the datasource is used, which should help when trying to
narrow down a problem
Go to Troubleshooting > Logs and Trace > pick the server
> Diagnostic Trace > Trace Specification: Specify
RRA=all=enabled:WAS.database=all=enabled
Notice here that you specify two trace strings separated by ':',
one for the WebSphere Application Server resource adaptor, and one
for the database (JDBC driver) since
See the following articles for more details on DB2 JDBC drivers
and tracing
http://www.ibm.com/developerworks/db2/library/techarticle/dm-0512kokkat/
http://www.ibm.com/developerworks/db2/library/techarticle/dm-0506fechner/
-
28
IBM Software Group
2003 IBM Corporation28
Trace Correlator ExampleWebSphere Trace Correlator for DB2
DB2 jcc trace
-
29
IBM Software Group
2003 IBM Corporation29
DB2 server side main log
(db2diag.log):2003-05-06-22.17.44.791070 Instance: db2inst1 Node:
000PID: 2706 (db2agent (ICMNLSDB)) TID:8192 Appid:
NF00001.G6D7.00F59AE79B0Faccess plan manager sqlra_sqlC_dump Probe:
25 Database: ICMNLSDB
DB2 Trace (server side)3571 mbt_scb DB2 common communication
sqlccgetapplid cei (3.3.43.10.2.1)
pid 1188018 tid 1 cpid -1 node 0 sec 0 nsec 16431127 probe
10marker name: PD_SQLT_MARK_APPIDDescription: Correlator identifier
(TCP/IP connection, JDBC type 4) bytes 26appID:
NF00001.G6D7.00F59AE79B0F
Universal JDBC driver trace (client
side)[ibm][db2][jcc][time:1050540951783][thread:main][Connection@8385e3]
Database product
version:
SQL08012[ibm][db2][jcc][time:1050540951783][thread:main][Connection@8385e3]
Driver name: IBM DB2
JDBC Universal Driver
[ibm][db2][jcc][time:1050540951783][thread:main][Connection@8385e3]
Driver version: 1.3.7 Test
Build[ibm][db2][jcc][time:1050540951783][thread:main][Connection@8385e3]
DB2 Correlator:
NF00001.G6D7.00F59AE79B0F[ibm][db2][jcc][time:1050540951783][thread:main][Connection@8385e3]
END TRACE_CONNECTS
-
30
IBM Software Group
2003 IBM Corporation30
Log Trace Analyzer Eclipse based tool included as part of the AC
Tool kit in DeveloperWorks
http://www.ibm.com/developerworks/autonomic/overview.html
Import logs from Apache HTTP Server, IBM HTTP Server, WAS Appl
Server, DB2 Server
Correlate logs based on correlation id (WAS, JCC, DB2) or
time,
Log and trace analyzer is included as part of theAC Tool kit in
http://www-128.ibm.com/developerworks/autonomic/overview.html?Open&ca=daw-prod-logandtrace
-
31
IBM Software Group
2003 IBM Corporation31
Configuration
Best Practice
-
32
IBM Software Group
2003 IBM Corporation32
General For WebSphere
Do NOT use DriverManager when developing
Websphereapplications
use DataSource, JNDI lookups, and datasource reference Use
connection pool (default) Use PreparedStatement cache to minimize
the need to re-
prepare SQL statements internally For DB2
Use jcc type 4 driver for remote access, and jcc type 2 driver
for local access
Use Config Advisor to do your initial configuration Use
sufficient DB2 global dynamic cache to minimize the
need to re-prepare SQL statements internally Use STMM (DB2 9) to
manage memory allocation (e.g. global
dynamic cache)
Connection object cachingds.getConnection() returns a connection
object from the WAS connection object pool or creates a new object
(up to WAS max)
PreparedStatement object cachingcon.PrepareStatement() returns
an already prepared statement object (no DB2 flow) from WAS
statement cache whenever possible.If not found in cache, statement
will be prepared(DB2 prepare flow) an kept in the cache (up to WAS
max)
EJB CachingCaching data within the EJB to avoid trips to the
backend database. (Timer validation)
-
33
IBM Software Group
2003 IBM Corporation33
WebSphere Queuing Network WebSphere establishes a queuing
network Includes the network, Web server, Web container, EJB
container, and data source
Represents a queue of requests waiting to use that resource
WebSphere Application Server
MaxClients for UNIXThreadsPerChild for Windows
Browser
HTTPServer
(MaxClients=75)
Web Container
(MaxThreads=50)
EJBContainer
(MaxThreads=50)
Data Source(MaxCon=25) Database
EJB Client
100Requests
75Requests
50Requests 25
Net
wor
k
Web Server
Connection pool
ORB thread pool maximum size
Thread pool maximum sizeHTTP transport channel: Maximum
persistent requests
WebSphere Application Server establishes a queuing network,
which is a group of interconnected queues that represent various
components. There are queues established for the network, Web
server, Web container, EJB container, ObjectRequest Broker (ORB),
data source, and possibly a connection manager to a custom back-end
system. Each of these resources represents a queue of requests
waiting to use that resource. Queues are load-dependent resources.
As such, the average response time of a request depends on the
number of concurrent clients.As an example, think of an
application, consisting of servlets and EJBs, that accesses a
back-end database. Each of these application elements reside in the
appropriate WebSphere component (for example servlets in the Web
container) and each component can handle a certain number of
requests in a given time frame.A client request enters the Web
server and travels through WebSphere components in order to provide
a response to the client.
-
34
IBM Software Group
2003 IBM Corporation34
WebSphere Queuing Network and DB2 Agents Queues are used in each
layer of a WAS environment Aggressive queue size can lead to
resource saturation.
Slow response time in WAS or DB2 could drive even more
connections into DB2 and make the whole system even slower. Set
reasonable limits to WAS connection pool (MaxCon) and DB2 agents
(maxagent)
For WebSphere:HTTP Servers MaxClient
> App Servers MaxThread> Data Sources MaxCon
For DB2:maxagent > sum of MaxCon from all WAS nodesmaxappl
>= 1.2 to 2x maxagent (to account for indoubts)num_poolagents
> sum of MinCon from all WAS nodes
In general do not enable concentrator unless the WebSphere nodes
have many idle connections and DB2 is memory bound
Use WebSpheres TPV and DB2s Get Snapshot for Database to monitor
and adjust
MAXAGENTSThe maximum number of physical DB2 server agents Set
this high enough to handle maximum of all WAS connections
MAXAPPLSThe maximum number of concurrent applications that can
be connected to a database
NUM_INITAGENTNumber of agents started when DB2 instance is
started
NUM_POOLAGENTSSpecifies maximum size of the server agent
pool
-
35
IBM Software Group
2003 IBM Corporation35
Database Connection Pooling Use the Type 4 (pure Java) JDBC
driver, if possible
Type 4 Universal JDBC Drivers (JCC) 10-30% faster than the
legacy/CLI JDBC driver
Type 4 JDBC drivers generally perform faster than Type 2 JDBC
drivers. Type 4 drivers best suited for client/ server environment.
Type 2 for local access.
Connection pool tuning Min 1, Max 30 good starting point for
tuning
Poor database or network performance often indicated by: Many
used connections Many threads waiting for the database connection
pool
Poor overall response time
Prepared statement cache Monitor via Tivoli Performance Viewer
Increase pool size if you see cache evictions
-
36
IBM Software Group
2003 IBM Corporation36
XA Transaction Optimization
Dont use XA datasources if you dont need to There is some
overhead over non-XA datasources even if transactions
only use a single datasource since it invokes an extra request
for transaction start and end
DB2 optimization for XA For legacy JDBC driver (and CLI and
embedded SQL),
set DB2 config parm:
DB2 UPDATE DBM CFG USING TP_MON_NAME=WAS
For jcc driver, the optimization is built-in
-
37
IBM Software Group
2003 IBM Corporation37
JMS
A message-driven bean (MDB) is an enterprise bean that allows
J2EE applications to process messages asynchronously.
Acts as a JMS message listener, The messages may be sent by any
J2EE component--an application client, another enterprise bean, or
a Web component--or by a JMS application or system that does not
use J2EE technology.
MDB Performance tips Change the default Cloudscape database to a
remote DB2 database for
better performance
Expect up to 50% higher throughput with remote DB2 compared to
local DB2
Tune the default thread pool
Deliver batches of messages to each MDB endpoint to improve
performance
Adjust the JDBC connection pool size and preparedStatementCache
size
-
38
IBM Software Group
2003 IBM Corporation38
JMS
Data store Performance tuning Sufficiently increase the JDBC
connection pool to cope with peak
loads
Place database logs on a fast RAID array to reduce the write
latency
Consider putting the SIBxxx tables into a tablespace with 32KB
pages
Adjust the column width of the VARCHAR column to 32032
bytes.
Use One-Phase Commit optimization for XA: On WAS, when using CMP
with both DB2 datasource and JMS, avoid
2-phase commit by using the same DB2 datasource for JMS data
Choose DB2 instead of FileStore (default in WAS 6.1) for JMS data,
and
then choose 1-phase JMS optimization
-
39
IBM Software Group
2003 IBM Corporation39
Session Database Application-related
Enable session persistence (java.io.Serializable)
Reduce size of the session object
Invalidate unneeded sessions
System-related Use larger DB2 page size
Tune session cache size
Create additional application server instances
Increase available memory
Tune session timeout interval
Consider using multi-row session in database persistence
Tune session database connection pool
Tune the database as usual
-
40
IBM Software Group
2003 IBM Corporation40
WebSphere Transaction Time-Out WebSphere transaction
time-out
The intention is to time-out cases where WebSphere hangs or
loops Does not time-out SQL query Only time-out a transaction after
a query returns
Several alternatives to time-out long running query Use DB2
Governor to force transaction that exceeds CPU or elapse
time limit In the JDBC (non-EJB) application, setQueryTimeout on
the query In the datasource definition, set custom property
blockingReadConnectionTimeout (DB2 FP12).
-
41
IBM Software Group
2003 IBM Corporation41
DB2 Client Side Time-Out DB2TCP_CLIENT_CONTIMEOUT and
DB2TCP_CLIENT_RCVTIMEOUT registry variables Used by non-jcc
driver (e.g. embedded SQL, CLI, and legacy
.app JDBC driver) to time-out a connection if the server is down
or overloaded.
For jcc driver, the equivalent properties are loginTimeout (FP9)
and blockingReadConnectionTimeout (FP12).
On WebSphere, these two can be setup as custom properties for
the datasource.
See details of DB2 registry variables at technote
http://www.ibm.com/support/docview.wss?uid=swg21231084
Use of DB2 Governor To force transaction that exceeds CPU or
elapse time limit
-
42
IBM Software Group
2003 IBM Corporation42
DB2 Server Side Transaction Time-Out
DB2CHECKCLIENTINTERVAL registry variable Check for client
terminating the connection before returning result
(e.g. a user kills an SQL application) Does not help if client
machine terminates abruptly where TCP
cannot respond; OS keepalive value needed to handle this
situation
See TCP/IP keepalive settings and related DB2 registry variables
at technote
http://www.ibm.com/support/docview.wss?uid=swg21231084
-
43
IBM Software Group
2003 IBM Corporation43
Application
Best Practice
-
44
IBM Software Group
2003 IBM Corporation44
JDBC/SQLJ Best Practices
Use setFetchSize() to optimize SELECT performance Use Batch
instead of individual UPDATE/INSERT statements Use stored procedure
to minimize even more network flow Turn off auto-commit Fetch Data
into their own primitive data types
e.g. getTimestamp 3x faster than getString if fetching
Timestamp
Use reusable statements whenever possible; use parameter
markersand avoid literals
SQLJ for static complex SQL statements to avoid prepare time
Use the following Statement methods for creating, executing, and
removing a batch of SQL updates: addBatchexecuteBatchclearBatch
-
45
IBM Software Group
2003 IBM Corporation45
EJB Best Practices EJBs represent managed access to DB resource
Sets the size and policies of its EJB cache to avoid
unnecessary
SQL requests
Avoid applying higher level of access intent than necessary on
EJBs(e.g. Set read-only access intent for read-only access!!)
Define index on primary key for tables where its Entity Beans
mapping has a findByPrimaryKey method
Use optimistic concurrency read-ahead hints for CMR fields Other
enhancement to minimize number of request flow to DB2:
Use batch updates Use Deferred create Use Partial Update Invoked
as JVM option:
Dcom.ibm.ws.pm.batch=true Dcom.ibm.ws.pm.deferredcreate=true
Dcom.ibm.ws.pm.grouppartialupdate=true
-
46
IBM Software Group
2003 IBM Corporation46
Understanding the JDBC vs DB2 Isolation Levels
TRANSACTION_SERIALIZABLE isolation level is the highest, most
restrictive, isolation level. It prohibits dirty reads,
non-repeatable reads, and phantom reads.
TRANSACTION_REPEATABLE_READ isolation level is the second
highest isolation level. It prohibits dirty reads and
non-repeatable reads, but allows phantom reads. Dont confuse this
with the DB2 RR.
TRANSACTION_READ_COMMITTED isolation level prohibits dirty reads
only. TRANSACTION_READ_UNCOMMITTED isolation level permits dirty
reads, non-
repeatable reads, and phantom reads.
WebSphere changed default from CS (WAS 4) to RS (WAS 5, 6). You
can override the default with a custom property
webSphereDefaultIsolationLevel for non-CMP appls. Other methods are
via resource reference or access intent.
Uncommitted Read (UR)TRANSACTION_READ_UNCOMMITTED
Cursor Stability (CS) TRANSACTION_READ_COMMITTED
Read Stability (RS)TRANSACTION_REPEATABLE_READ
Repeatable Read (RR)TRANSACTION_SERIALIZABLE
DB2 Isolation LevelJDBC Isolation Level
See
http://www-1.ibm.com/support/docview.wss?rs=180&uid=swg21224492
on how to change the default isolation level with difference
methods.
-
47
IBM Software Group
2003 IBM Corporation47
Whats Coming for DB2/WebSphere
Integration
-
48
IBM Software Group
2003 IBM Corporation48
Heterogeneous DB2 pooling
Heterogeneous pooling is the ability to share one connection
pool among multiple similar WebSphere data sources Core properties
will have to be identical (e.g. username, host,
port, ..)
Can, significantly, reduce database overhead by reducing # of
physical connections to the database.
Additional optimization will also eliminate 2-phase commit to
the use of these datasources within the same transaction when the
same connection is being used The Get use close pattern must be
used.
-
49
IBM Software Group
2003 IBM Corporation49
DB2 Trusted Context
Identity propagation which is useful for accountability. Doesnt
require creating and destroying of connection (hence, good
performance)
Better security (fine grained security) - no longer need to give
one user access to all tables in the database.
-
50
IBM Software Group
2003 IBM Corporation50
DB2 SQLj usability enhancements in WebSphere
Allow for SQLj profiles to be created, customized and bound
during SQLj application install
Allow for SQLj profiles (.ser files) to be modified for existing
installed applications in WebSphere from the WebSphere admin
console/WSAdmin.
-
51
IBM Software Group
2003 IBM Corporation51
Resources
-
52
IBM Software Group
2003 IBM Corporation52
Additional Resources Sign up to receive weekly technical My
support emails
www.ibm.com/software/support/einfo.html
WebSphere Application Server Performance Web Site
http://www.ibm.com/software/webservers/appserv/performance.html
Performance guides includes papers describing how to maximize
performance
Redbooks http://www.redbooks.ibm.com Best Practices for
High-Volume Web Sites DB2 UDB/WebSphere Performance Tuning Guide
(and ITSO course) IBM WebSphere V6.0 Performance, Scalability, and
High Availability WebSphere
Handbook (and ITSO course) WebSphere Version 6 Application
Development Handbook
WebSphere Application Server InfoCenter
http://www.ibm.com/software/webservers/appserv/infocenter.html
WebSphere Application Server V6 Tuning Guide
-
53
53
Peter ShumIBM Toronto Laboratory
[email protected]
Session F13DB2 WebSphere Integration Best Practice