Introduction
Retrieving the list of projects matching the search query takes way too long.
Technical description
The endgoal is to optimize project retrieval (LazyProject? or only retrieve project name).
Also identify the other bottlenecks in the application, and per bottleneck, estimate how long it would take to remove.
- Install JProfiler
- profile ops_admin
- describe bottlenecks and estimate fix-time
Incremental profiling
See
RemovedUnusedFunctionalityFromReportPage for the smallish set of timesheets used.
Step 1
- open select project page 116 ms
- select project page: get all active (34 of 521) projects 1,3 s
- 48 % getPersonByUid, called 163 times
- open project page 247 ms
- open report page ca 300 ms
- 50% getProjectNamesAndUids (webservice call )
- get basic report 311 ms
- get projects-total report 78 ms
- get no tranformation 15 ms
- get basic report per person 65 ms
The biggest bottleneck is select project page. Getting all project attributes is not necessary at this stage. A lazy project and project member cache (for example
ehcache) is the obvious solutions.
New results with local ldap
- get the 65 active projects: 391 ms
- getPersonByUid called 62 times
- get all 431 projects: 2,5 sec
- 35% listtasks
- ca 30% get project members
After optimization:
- get active projects: 0.5 ms
- get all projects: 279ms
If further optimazation is required, the retrieval and transformation of timesheetreports could be looked into, also OpsPersons could be cached.
Estimates
Discussion
What is the current way of retrieving the project list? Are the ops webservices used, because these are fast enough I think. Or is ops admin using ldap directly? -- IvoVanDongen - 14 Aug 2008
--
IvanaCace - 05 Aug 2008
Topic revision: r7 - 02 Sep 2008 - 13:57:02 -
IvanaCace