Documente Academic
Documente Profesional
Documente Cultură
larry.klein@hotsos.com
07 March 2005
• A Case Study
• Lessons Learned
• Generalizing a Method for End to End Performance
Optimization
• Insurance company
• Custom application
– under development for two years
– nighttime batch load of transaction data
– daytime online edits, reviews, approvals of transaction data
– in “pilot production” phase for 10% of total online user base
• some users in geographically distributed corporate offices
• other users work from home via dialup or broadband VPN
• Online response times unacceptable
– “everything is slow”
– editors and reviewers are clerical and paid by “piece work”
• “Please help us fix our Oracle Database”
Oracle Database
• made notes
– to pursue reason why/ possible
elimination of describe
– to review init.ora CBO parm’s
• optimizer_index_cost_adj = 10 not 100
• optimizer_index_cache = 80 not 0
A 19 18 5
B 31 29 5
C 6 6 5
… … … 5
Oracle Database
?
User
SQL*Net
msg from Client
“The status light is red for the Catalog Center operation in Wichita
because Carol Smith’s Order Entry transaction from there is taking
3.92 seconds which exceeds the SLA of 2.0 seconds; drilling down on
the red status shows her online transaction waiting on the database,
which is suffering from high I/O contention on file 23, due to large batch
job XYZ that’s running right now at an inappropriate time of day.”
Workflows
User Trans P Engine
A
SO
PC Gateway
HTTP
.Net
Client CICS/
SOAP MQ Interface MQ Cobol
Sniffer
.log file
Attributes Issues
• Timestamps • Awareness - Client’s Production Support team didn’t
– start know that logs were available or how to enable them
– Original architects no longer involved with project
– end
– “Custom” logs built by silo teams for their own
– duration (calculated)
purposes but not widely known to other teams
• Transaction/Step name – “Standard” logs supplied by vendors but not
– current process widely known by project team
– called process • Inconsistent timestamp granularity across log files
A S1 Wa GET…
B S2 Wb DO…
C S3 Wc xyzLKUP…
… … … …
Workflows
User Trans P Engine
A
SO
PC “A” Gateway
.08
HTTP seconds
.Net 8.70
Client
seconds CICS/
SOAP MQ Interface MQ Cobol
18.00 9.00
seconds seconds
Count % of
Sum % of Avg
SOAP Call Type Count Total Sum (msec)
Total Sum (msec)
Count
• “Thanks – this is the best End to End View we’ve ever had!”
• Using logging on an ongoing basis
• Collapsing multiple, ongoing static lookups
– one static lookup at login
– cache lookups in .Net client
– realize tradeoff of one slightly longer login for many 6-8 second savings per edit or
review throughout the day
• Reevaluating current Transaction Gateway Usage (XML Lovefest)
– currently maps .Net client inbound SOAP/XML to alternative SOAP/XML format
before passing downstream to Workflow or MQ; receivers need to reparse for their
own purposes
– substantial latency/cpu consumption from SOAP/XML parsing and manipulation
– considering simpler non-XML map for messages “once in glass house” to eliminate
redundant construction/parsing overhead
• Reevaluating current Workflow Engine Usage
– currently used as “database driver” but each workflow = 1000+ steps around db call
– considering using only when “flow” is required otherwise call db from Gateway
Trans Service DB
Request Call
• Identify the major technology building blocks through which the business
transactions flow
• Identify the service calls/interfaces among the blocks
• Construct a “sequence diagram” template to map the blocks
User Unacct Web Unacct Middle Unacct Database
Time Time Time Time Tier Time Time Time
Trans Service DB
Request Call
• Define goals
• Construct a capture plan
– How/who will drive transactions?
– How/who will support the logging?
• Prepare to execute the plan
– Time synch all platforms
– Enough space for logging?
– “Skinny down” test connection pool
• Execute the plan
• Measure activity
• Preserve the results, outputs
Phase Steps
Before Enable data collection for each relevant block