Improving the startup performance was always on our mind and that has been one of our focus areas for this release. And yes we have been working on this for a long time now, since the beginning of Glassfish V2 ([1],[2]) and I have been involved in Co-ordinating the effort to improve the startup performance of the Glassfish V2 ([1],[2])'s Domain Administration Server (DAS), Cluster and Instance. Following are the improved results compared to the SJSAS 8.1 version which were captured by our performance lead, Suveen. The numbers below are measured for the Sun Java System Application Server 9.1 the Productized version (from Sun) of Glassfish V2 ([1],[2]).
| Component |
Improved by (%) compared to 8.1 |
| Start/Stop Cluster |
20% |
| Start/Stop Instance |
18% |
| Start/Stop Domain |
15% |
Very involved task but it was made easy by excellent contributions from the below mentioned Engineers. I thank all of them without which it would not have been possible to reach these better figures. There were other contributions made (Analyzing the profiles data, identifying the problem areas etc.,) by other members which couldn't be shown in numbers, they are Kedar, Suveen , Abhijit and Nazrul.
Following is the detailed list of improvements done in different modules.
| S.No |
Description |
Improvement |
Engineer |
| 0. |
Getting the results and
constantly monitoring the optimizations and any regressions from build
to build on various type of Systems |
NA |
Suveen |
| 1. |
Starting all the system apps concurrently | 7% |
Tim |
| 2. |
Starting all web-modules[user/system] concurrently. | 4% |
Jan |
| 3. |
Parsing overhead of deployment descriptors. | 2% |
Tim |
| 4. |
Removing the load-on-startup from wstx-services application. | 6% |
Vijay/Jan |
| 5. |
Delaying the admingui loading till the first request | 7% |
Ryan/Jan/ Ken |
| 6. |
Delaying loading of the WSTCPServiceLifeCycle module till the first request. | 0.5% |
Alexy |
| 7. |
Threading the LifecycleModuleService initialization | 2% |
Lloyd |
| 8. |
Threading all same-load-order lifecycle modules[WSTCPConnectorLCModule, JBIFrameworkLC] for each of {onInitialization, onStartup, onReady}. | ||
| 9. |
Remove call to registorValidator() for instances. | 1.1% |
Prashanth |
| 10. |
DottedNameOptimization [Bug No : 6491081] | 2% |
Lloyd |
| 11. |
TypeInfo optimization. | ||
| 12. |
AdminChannelServer., load in a separate thread. | ||
| 13. |
ias MBeans removed | ||
| 14. |
Removed the extra JVM
invocations from startup/shutdown of servers. Details |
Stop - 44% StartDomain - 12% |
Byron |
| 15. |
ConfigContextImpl.refresh() is called too often | 4% |
Siva |
| 16. |
getAdminMBeanRegistry(), this call shouldn't be there in instance/cluster startup. | 4% |
Prashanth |
| 17. |
Removing the JXTA pipe creation
during the application server cluster startup. Move the pipe creation
logic to first deployment when the app is deployed with availability
enabled set to TRUE |
8-10% |
Larry White |
| 18. |
Move the cascading logic to
start domain. |
2-4% |
Sreeni |
| 19. |
JMXConnector for JConsole to be
initialized on demand. Details |
0.4% |
Nandini |
| 20. |
Threading all the Lifecycle
Modules. This has been shelved as it was proven a risky change and
required a lot of testing. |
NA |
Lloyd, Nandini, Prashanth |
| 21. |
Improved JBI Lifecycle Startup
time, optimization in XA recovery, optimizations in Developer
profile which in turn improved cluster and EE profiles. |
NA |
Keith/Derek |
| 22. |
Omitting the second and
subsequent calls to upgradeCheck in asadmin start-domain |
NA |
Kedar |

Excellent job!
Posted by janey on September 06, 2007 at 01:48 AM PDT #