1 tuning your application rob marshall principal solutions consultant, progress software session 131
TRANSCRIPT
1
Tuning Your Application
Rob Marshall
Principal Solutions Consultant, Progress Software
Session 131
© 2009 Progress Software Corporation. All rights reserved.
Agenda
Overview of a OERA application AppServer Code Testing Using the VSTs Using Profiler Interpreting the Results
2
© 2009 Progress Software Corporation. All rights reserved.
Application Overview
3
© 2009 Progress Software Corporation. All rights reserved.
Application Overview
The OERA Basics Separate the UI from the Business Logic Separate the Data Access from the Business Logic
4
© 2009 Progress Software Corporation. All rights reserved.
AppServer
Application Overview
5
Data
© 2009 Progress Software Corporation. All rights reserved.
AppServer Code Testing
6
Why Test the code????
© 2009 Progress Software Corporation. All rights reserved.
AppServer Code Testing
Verify it is as efficient as it can be Run it locally to get profiler information Capture VST information Verify the output
7
© 2009 Progress Software Corporation. All rights reserved.
AppServer Code Testing
IF vAppServer THENDO: /* Connect to AppServer */ CREATE SERVER hAppSrv. vRet = hAppSrv:CONNECT ("-sessionModel Session-free - AppService " + cASName + " -H " + cASIP + " -S 5162","adm-gym",""). /* If error, run the routine locally and inform the developer */ IF NOT vRet THEN DO: MESSAGE "Failed to Connect to AppServer - Running Locally“ VIEW-AS ALERT-BOX. RUN common/commonprocs.p PERSISTENT SET CommonProcs. SESSION:ADD-SUPER-PROCEDURE(hCommonProcs). END.END.ELSE
8
© 2009 Progress Software Corporation. All rights reserved.
AppServer Code Testing
9
IF vAppServer AND VALID-HANDLE(hAppSrv) THENDO: /* We are running on the AppServer, and we are connected to it */ RUN "salesorder/SI/Get.p" ON SERVER hAppSrv (INPUT ?, /* Session ID */ INPUT ?, /* RowID */ INPUT 0, /* ProdID */ INPUT 0, /* Rev */ OUTPUT TABLE-HANDLE phttError, OUTPUT DATASET DSProposal).END. ELSEDO: /* We are running locally */
© 2009 Progress Software Corporation. All rights reserved.
Using VSTs
10
Ask not what you can do for your VSTs, but what your VSTs can do for you…..
So What is a VST…..
© 2009 Progress Software Corporation. All rights reserved.
Using VSTs
Background Check Index Range Size (-indexrangesize) Table Range Size (-tablerangesize)
11
© 2009 Progress Software Corporation. All rights reserved.
Using VSTs
Major VST’s to review IndexStat – Shows index usage, look for unused
indexes or inefficient index usage in your tests TableStat – Shows table usage, look for excessive
reads or updates
Gotcha’s…. These VSTs are from the start of the DB server, not your
specific session
12
© 2009 Progress Software Corporation. All rights reserved.
Using VSTs
13
© 2009 Progress Software Corporation. All rights reserved.
Using VSTs
Your VSTs: _UserIndexStat – Shows index usage for this session _UserTableStat – Shows table usage for this session _UserIO – shows overall DB access for the session _MyConnection – Is the current connection you are using
14
© 2009 Progress Software Corporation. All rights reserved.
Tools
15
VSTs are nice, BUT……..
What other tools are available?
© 2009 Progress Software Corporation. All rights reserved.
Tools
The Profiler Utility OpenEdge Management Compile Listing Compile XREF Many third party tools (PEG, OEHive, PSDN, etc)
16
© 2009 Progress Software Corporation. All rights reserved.
Using Profiler
• Profiler is a tool, not a automatic fix utility• It can help identify areas of performance concern• Profiler is officially unsupported but many folks in the
Global Progress community extend it and it is a very useful tool
17
© 2009 Progress Software Corporation. All rights reserved.
Using Profiler
To get the best results, you need source code in your path
Profiler does not count time used to enter data, only execution time
18
© 2009 Progress Software Corporation. All rights reserved.
Using Profiler
Look for sections of code with Long execution times Many iterations Called often
19
© 2009 Progress Software Corporation. All rights reserved.
Using Profiler
20
To Use In-Line Arguments to turn on Profiler:
IF vProfiler THENDO: /* * Start Profiler using in-line directives */ PROFILER:ENABLED = TRUE. PROFILER:LISTINGS = TRUE. PROFILER:COVERAGE = TRUE. PROFILER:DESCRIPTION = cProfDesc. PROFILER:FILE-NAME = cProfName. PROFILER:DIRECTORY = cProfDir. PROFILER:PROFILING = TRUE.END.
© 2009 Progress Software Corporation. All rights reserved.
Using Profiler
21
To Use In-Line Arguments to turn off Profiler:
IF vProfiler THENDO: /* * Turn off profiling using in-line directives */ PROFILER:PROFILING = FALSE. PROFILER:WRITE-DATA(). PROFILER:ENABLED = FALSE.END.
© 2009 Progress Software Corporation. All rights reserved.
Using Profiler
22
Profiler as a client start-up:
In your normal client session startup add:-zprofile ProfileConfigFile
The Profile Config File contains:-OUTFILE Filename-LISTINGS [Directory] -DESCRIBE Description
© 2009 Progress Software Corporation. All rights reserved.
Interpreting the Results
23
Now that we have captured some data, what next?
© 2009 Progress Software Corporation. All rights reserved.
Interpreting the Results
24
You may need to edit your .out file…..
6 "DaypartLookup vehicle/bevehicle.p" "" 02 "Vehicle/SI/VehicleLookup.p “/tmp/list/dbg_VehicleLookup_6ca05444" 347824 "ClearMessages common/commonprocs.p" "" 03 "ServiceAdapter common/commonprocs.p" "" 05 "vehicle/bevehicle.p" “/tmp/list/dbg_bevehicle_6da05444" 28781
© 2009 Progress Software Corporation. All rights reserved.
Interpreting the Results
25
© 2009 Progress Software Corporation. All rights reserved.
Interpreting the Results
26
© 2009 Progress Software Corporation. All rights reserved.
Interpreting the Results
27
© 2009 Progress Software Corporation. All rights reserved.
Interpreting the Results
28
© 2009 Progress Software Corporation. All rights reserved.
In Summary
29
You can use simple tools (including OpenEdge Management)
The performance review process can be easily incorporated into any
development process
Ensuring performance during the development process saves effort later
Tuning Your Application
30
Rob Marshall
Principal Solutions Consultant, Progress Software
Session 131