Title: Packaged Application Tuning
1Packaged Application Tuning
- David Kurtz
- Go-Faster Consultancy Ltd.
- david.kurtz_at_go-faster.co.uk
- www.go-faster.co.uk
2Packaged Application Tuning
- Who am I?
- What is Tuning?
- What is a Packaged Application?
- What techniques could you use?
- Experimental Session
- Are you, the membership, interested in discussing
Application specific issues?
3Rules of Engagement
- If you cant hear me - say so now!
- Feel free to ask on-topic questions during the
presentation. - This presentation (with notes) is available on
the conference website (after the conference) and
on - www.go-faster.co.uk
4Who am I?
- DBA
- Independent consultant
- Performance tuning
- PeopleSoft
- UKOUG Unix SIG Chair
5Aphorism
- Performance is exactly what the user perceives it
to be. No more, no less.
- Poor performance is when the users perception
does not match their expectation.
6Aphorism
- Performance Tuning is a search for lost time.
7Aphorism
- When you have eliminated the impossible, whatever
remains, however improbable, must be the truth. - A Study in Scarlet, Arthur Conan-Doyle
- It is a capital mistake to theorise before one
has data. - The Memoirs of Sherlock Holmes, Arthur Conan-Doyle
8Aphorism
- Detection is, or ought to be, an exact science.
It should be be treated in the same cold and
unemotional manner. - The Sign of Four, Arthur Conan-Doyle
9What is a Packaged Application
- Bought in from a software vendor.
- You didnt have any say in how it was developed.
- You cannot (easily) change the code.
- You may not even be able to see the code.
- It may be designed to run on other databases as
well as Oracle.
10What Packaged Applications are there?
- ERP
- Oracle, SAP, PeopleSoft
- Baan, J D Edwards ...
- CRM
- and Siebel
- What others?
11It isnt always the database!
- Understand architecture
- Web front end
- Network
- Application server
- Database
- What can you measure?
12PeopleSoft Internet Architecture
- PIA is 4-tier architecture
- Each component can contribute to response time
- Need to measure each component
13Sources of Metrics
- Browser
- Proxy Server
- 3rd Party software
- Local agent on PC
- Web Server
- Access Log
14Sources of Metrics (2)
- BEA/Tuxedo
- Service Trace
- TMADMIN
- Oracle Database
- SQL_Trace
- PSFT Application Server Trace
15Sources of Metrics
Proxy Server Access Log
Tuxedo Service Trace
Oracle SQLTrace
Tuxedo tmadmin script
Webserver Access Log
16Web/Proxy Access Log
- Standard format for access log
- www.w3.org/pub/WWW/TR/logfile.html
- Apache is different
17Web/Proxy Access Log
- Fields
- Date, Time
- Time Taken
- accurate to OS time units (1/100ths or 1/1000ths)
- only 1s on Apache
- Message bytes
- IP addresses DNS names
- URI stem Query
18Apache Access Log
- httpd.conf
- LogFormat "Y.m.d HMStTBuhUse
r-AgentigtsmUq" monitoring - CustomLog logs/access.log monitoring
19Sample Apache Access Log
- 2002.02.26 0957060275-127.0.0.1Mozilla/4.0
(compatible MSIE 6.0 Windows NT 4.0
Q312461)200GET/peoplesoft8/cache/PT_NEXTTAB_ENG
_1.gif - 2002.02.26 095717031847-127.0.0.1Mozilla/4.
0 (compatible MSIE 6.0 Windows NT 4.0
Q312461)200POST/servlets/iclientservlet?ICType
PanelMenuADMINISTER_WORKFORCE_(GBL)MarketGBL
PanelGroupNameJOB_DATA - 2002.02.26 095726030959-127.0.0.1Mozilla/4.
0 (compatible MSIE 6.0 Windows NT 4.0
Q312461)200POST/servlets/iclientservlet?ICType
PanelMenuADMINISTER_WORKFORCE_(GBL)MarketGBL
PanelGroupNameJOB_DATA
20What does the access log tell us?
- A date and time for every request
- Who made the request?
- How long did it take to serve?
- What was requested?
- Which component (panel group)?
21BEA/Tuxedo Service Trace
- Edit psappsrv.ubx file
- CLOPT-r -e APPQ.stderr
- -r enables trace to stderr file
- -e qualifies name of stderr file
22Sample Tuxedo Service Trace
- Each service called to domain is logged
- SERVICE PID SDATE STIME
EDATE ETIME - ------- --- ----- -----
----- ----- - _at_ICScript 390 1014717320 4586495
1014717322 4588397 - _at_ICScript 390 1014717322 4588467
1014717322 4588537 - _at_ICScript 390 1014717322 4588557
1014717323 4589259 - _at_ICScript 390 1014717332 4598021
1014717332 4598171 - _at_ICScript 390 1014717355 4621745
1014717361 4627554 - _at_ICScript 390 1014717365 4631329
1014717366 4632511 - _at_ICScript 390 1014717375 4641944
1014717377 4643306 - _at_ICPanel 390 1014717380 4646761
1014717381 4647783 - _at_ICPanel 390 1014717388 4654202
1014717391 4657567 - _at_ICPanel 390 1014717396 4662614
1014717401 4667271
23Tuxedo Service Trace
- Service - Name of Service
- Pid - An OS PID of listener or handler
- Sdate/Edate - Start/End Date
- Seconds since 0000hrs GMT 1st January 1970.
- Stime/Etime
- Start/End Time in OS time units (1/ 100ths or
1/1000ths) - Hence calculate accurate service duration
- Time on Server - not queuing
24BEA/Tuxedo TMADMIN Utility
- BEA Interactive command line interface
- Can be included in scripts
- -r for read only in monitoring scripts
- pq (printqueue)
- psr (printserver)
- pclt (printclient)
25PQ
- What queues in domain
- How many servers on queue
- How many requests queued
- (How much work on queue)
- Prog Name Queue Name Serve Wk Queued
Queued Ave. Len Machine - --------- ------------------- ---------
-------- -------- ------- - JSL.exe 00095.00200 1 -
0 - GO-FASTER - JREPSVR.exe 00094.00250 1 -
0 - GO-FASTER - PSSAMSRV.exe SAMQ 1 -
0 - GO-FASTER - BBL.exe 54455 1 -
0 - GO-FASTER - WSL.exe 00001.00020 1 -
0 - GO-FASTER - PSAPPSRV.exe APPQ 1 -
0 - GO-FASTER
26PSR
- What servers exist?
- How many requests have they handled?
- What are they doing right now?
- Prog Name Queue Name Grp Name ID
RqDone Load Done Current Service - --------- ---------- -------- --
------ --------- --------------- - BBL.exe 54455 GO-FAST 0
3 150 ( IDLE ) - PSAPPSRV.exe APPQ APPSRV 1
9 450 ICPanel - PSSAMSRV.exe SAMQ APPSRV 100
0 0 ( IDLE ) - WSL.exe 00001.00020 BASE 20
0 0 ( IDLE ) - JSL.exe 00095.00200 JSLGRP 200
0 0 ( IDLE ) - JREPSVR.exe 00094.00250 JREPGRP 250
5 250 ( IDLE )
27PCLT
- Who is connected?
- Are they doing something?
- When did they connect?
- LMID User Name Client Name
Time Status Bgn/Cmmt/Abrt - --------------- --------------- ---------------
-------- ------- ------------- - GO-FASTER-1 NT WSH
02114 IDLE 0/0/0 - GO-FASTER-1 NT JSH
02113 IDLE 0/0/0 - GO-FASTER-1 NT tmadmin
00000 IDLE 0/0/0 - GO-FASTER-1 PS JavaClient
00230 BUSY/W 0/0/0
28Oracle SQL Trace
- Tuning tool
- Session trace
- Format it with TKPROF
- Find long running SQL statements
- Total SQL Time for session
- call count cpu elapsed disk
query current rows - ------- ------ -------- ---------- ----------
---------- ---------- ---------- - Parse 72289 173.06 175.45 7
14654 94 0 - Execute 77140 64.02 67.37 205495
766343 170611 78630 - Fetch 50599 33.20 34.28 17302
971624 80146 143218 - ------- ------ -------- ---------- ----------
---------- ---------- ---------- - total 200028 270.28 277.10 222804
1752621 250851 221848
29Small Application Servers
- Create small application with just a single
handler process - Enable trace on that process
- Trace sample transaction (only one user)
- sys.dbms_system.set_sql_trace_in_session(ltsidgt,ltse
rialgt,TRUE)
30Sources of Metrics
Proxy Server Access Log
Tuxedo Service Trace
Oracle SQLTrace
Tuxedo tmadmin script
Webserver Access Log
31Graphical Analysis
- Dont drown in numbers
- Draw a picture
- Load Data into Database
- SQL_Loader (Oracle 9i External Table)
- Process Data
- Matching, Aggregation
- Oracle Analytic Function
- Load data into Excel
- Draw Graph
32Sample SQLLoader File
- LOAD DATA
- INFILE 'APPQ.stderr'
- REPLACE
- INTO TABLE txrpt
- WHEN (1) '_at_'
- FIELDS TERMINATED BY WHITESPACE
- TRAILING NULLCOLS
- (service "substr(service,2)" -- remove leading _at_
- ,pid
- ,stimestamp "stimestamp/864002/24TO_DATE('01011
970','DDMMYYYY')" - ,stime "stime/100"
- ,queue APPQ"
- ,etime "etime/100")
33Tips about Graphs
- Connect Excel directly to a database
- Aggregate data carefully
- Too little and excel draws it badly because it
adds a black border around an area - Too much and you lose details
- Pivot tables are useful
- but Excel97 buggy
- Scatters and Trendlines
- joining dots can obscure data
- Excel supports 32000 points per series
34Example CPU Utilisation
35Example Apache Servlet Times
36Longest http conversations
37Example Tuxedo Service Time
38tmadmin - PCLT - Connect Client Sessions
39tmadmin - PCLT - Busy/Wait Users
40tmadmin - PQ - Queue Length
41tmadmin - PSR - print server processes
42Relating different metrics produces new
information
43Batch Performance
44Sources of Metrics
- Process Scheduler Request Table
- every scheduled process recorded on this table
- start and end time
- Application Traces
- SQL Trace
45Graphical Analysis
46Oracle SQLTrace TKPROF
- Enable SQL Trace on batch process
- Process trace file with TKPROF
- report Top n statements
- sort by
- Parse/Fetch/Execute
- CPU/Elapsed Time
- statement timings/execution plan
- call count cpu elapsed disk
query current rows - ------- ------ -------- ---------- ----------
---------- ---------- ---------- - Parse 36 0.02 0.01 0
0 0 0 - Execute 36 55.09 86.80 0
2973787 3 1 - Fetch 0 0.00 0.00 0
0 0 0 - ------- ------ -------- ---------- ----------
---------- ---------- ---------- - total 72 55.11 86.81 0
2973787 3 1
47Triggers
- Process Scheduler Status Change
- On-Connect
- Enable Trace
- Archiving data during purge routines
- Altering session parameters
48Process Scheduler
- CREATE OR REPLACE trigger sysadm.set_trace
- before update of runstatus on sysadm.psprcsrqst
- for each row when
- (new.runstatus 7 and old.runstatus ! 7
- and new.prcstype IN('Application Engine','COBOL
SQL', - 'SQR Process','SQR Report','SQR Report For WF
Delivery'))
49On-Connect Triggers
- create or replace trigger sysadm.psqrysrv_session_
trigger - after logon on sysadm.schema
- declare
- l_program VARCHAR(64)
- begin
- SELECT program INTO l_program FROM vsession
- WHERE sid IN(SELECT sid FROM vmystat WHERE
rownum 1) - IF substr(l_program,1,8) 'PSQRYSRV' OR
INSTR(UPPER(l_program),'PSNVS') gt 0 THEN - sys.dbms_session.set_sql_trace(true)
- ...
50For example
- sys.dbms_session.set_sql_trace(true)
- ALTER SESSION SET EVENTS '10053 trace name
context forever, level 1 - ALTER SESSION SET EVENTS '10128 trace name
context forever, level 2 - ALTER SESSION SET optimizer_modeFIRST_ROWS
- ALTER SESSION SET optimizer_index_caching100
- ALTER SESSION SET optimizer_index_cost_adj1
- ALTER SESSION SET sort_area_size 100000
- sys.dbms_application_info.set_module('nVision','ps
qrysrv_session_trigger fired')
51Aphorism
- The problems change from release to release, but
the methods by which they are investigated remain
the same. - Jonathan Lewis (author of Practical Oracle 8i)
52Questions?
53Aphorism
- You know my methods, apply them.
- A Study in Scarlet, Arthur Conan-Doyle
54Packaged Application Tuning
- David Kurtz
- Go-Faster Consultancy Ltd.
- david.kurtz_at_go-faster.co.uk
- www.go-faster.co.uk