axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "srinivas srirangan (JIRA)" <axis-...@ws.apache.org>
Subject [jira] Commented: (AXIS-2470) performance issue with discovery for org.apache.axis.EngineConfigurationFactory
Date Tue, 02 May 2006 18:26:48 GMT
    [ http://issues.apache.org/jira/browse/AXIS-2470?page=comments#action_12377446 ] 

srinivas srirangan commented on AXIS-2470:
------------------------------------------

Hi Bjorn

We are using Axis 1.2RC3. But we compared the code between 1.2RC3 and 1.3, and found there
we no differences for the below class: org.apache.axis.configuration.EngineConfigurationFactoryFinder

1) Initially the performance testing on our server showed very high CPU usage on the following
methods: 

java.util.zip.ZipFile.getEntry
sun.misc.URLClassPath.getLoader
java.util.zip.ZipFile.open

The above profiling was done using HPJMeter and Eprof on HP-UX. 

2) So, we tried a unit testing on the server by executing this call once and running a process
called tusc on the HP-UX, (tusc is similar to truss on Solaris) and found that for every outbound
web service call made by Axis, the following jar files were opened and read. 
* xercesImpl.jar
* xalan.jar
* axis.jar 
* dom3-xercesImpl.jar 
* piccolo.jar 
* xerces.jar 
* xercesImpl.jar 

3) Then, I tried to debug more on my local machine by modifying the source file for java.util.zip.ZipFile.getEntry
method and using the prepend bootclasspath option from java as shown below:

-Xbootclasspath/p:C:/javasrc; 

Now, we found that the services.hasNext() call in the below code snippet caused all the above-mentioned
jar files to be opened and read for a specific property called org.apache.axis.EngineConfigurationFactory.
(we can see this from the trace above) 

Code snippet from org.apache.axis.configuration.EngineConfigurationFactoryFinder
======================================================================

                        ResourceClassIterator services = AxisProperties.getResourceClassIterator(mySpi);
                        EngineConfigurationFactory factory = null;
                        while (factory == null  &&  services.hasNext()) {
                          try {
                            Class service = services.nextResourceClass().loadClass();
                            /* service == null
                             * if class resource wasn't loadable
                             */
                            if (service != null) {
                                factory = newFactory(service, newFactoryParamTypes, params);
                            }
                          } catch (Exception e) {
                            // there was an exception creating the factory
                            // the most likely cause was the JDK 1.4 problem
                            // in the discovery code that requires servlet.jar
                            // to be in the client classpath.  For now, fall
                            // through to the next factory
                          }

4) Also, we tried to override this discovery mechanism by running the following system property
options:
  * run with axis.EngineConfigFactory=org.apache.axis.configuration.EngineConfigurationFactoryDefault

  * run with org.apache.axis.EngineConfigurationFactory=org.apache.axis.configuration.EngineConfigurationFactoryDefault


Still these jar files were being read on the services.hasNext() invocation. 


5) I looked at the patch provided for the Bug - 385 (http://issues.apache.org/jira/browse/AXIS-385).
I was not sure why this code is removed from the later releases. 

Does this help? Please let me know if you need any more details. Thanks.


> performance issue with discovery for org.apache.axis.EngineConfigurationFactory
> -------------------------------------------------------------------------------
>
>          Key: AXIS-2470
>          URL: http://issues.apache.org/jira/browse/AXIS-2470
>      Project: Apache Axis
>         Type: Bug

>   Components: Serialization/Deserialization
>     Versions: 1.2RC3
>  Environment: HP-UX, Apache Axis 1.2 RC3, Websphere 6.0 
>     Reporter: srinivas srirangan

>
> This is reference to a performance problem that we are currently facing and silmilar
to the bug 385 (http://issues.apache.org/jira/browse/AXIS-385). 
> Our trace below shows that the property named "org.apache.axis.EngineConfigurationFactory"
is being searched on all the xml related jar files. 
> We tried running the tests with the both the below options:
> 1) run with axis.EngineConfigFactory=org.apache.axis.configuration.EngineConfigurationFactoryDefault

> 2) run with org.apache.axis.EngineConfigurationFactory=org.apache.axis.configuration.EngineConfigurationFactoryDefault
> Still we get an identical results. Our final result shows high CPU utilization on the
java.util.zip.ZipFile.getEntry() method and the root cause being the jar files being read
for the each outbound web service call. 
> Does the discovery mechanism does this by default? 
> Can you please shed some lights on this issue? 
> trace:
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xercesImpl.jar Entry Name: org/apache/commons/discovery/resource/names/DiscoverNamesInAlternateManagedProperties$1.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xalan.jar Entry Name: org/apache/commons/discovery/resource/names/DiscoverNamesInAlternateManagedProperties$1.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\axis.jar Entry Name: org/apache/commons/discovery/resource/names/DiscoverNamesInAlternateManagedProperties$1.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xercesImpl.jar Entry Name: org/apache/commons/discovery/resource/names/DiscoverNamesInManagedProperties$1.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xalan.jar Entry Name: org/apache/commons/discovery/resource/names/DiscoverNamesInManagedProperties$1.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\axis.jar Entry Name: org/apache/commons/discovery/resource/names/DiscoverNamesInManagedProperties$1.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xercesImpl.jar Entry Name: META-INF/services/org.apache.axis.EngineConfigurationFactory
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xalan.jar Entry Name: META-INF/services/org.apache.axis.EngineConfigurationFactory
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\axis.jar Entry Name: META-INF/services/org.apache.axis.EngineConfigurationFactory
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\dom3-xercesImpl.jar Entry Name: META-INF/services/org.apache.axis.EngineConfigurationFactory
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\piccolo.jar Entry Name: META-INF/services/org.apache.axis.EngineConfigurationFactory
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xerces.jar Entry Name: META-INF/services/org.apache.axis.EngineConfigurationFactory
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xercesImpl.jar Entry Name: META-INF/services/org.apache.axis.EngineConfigurationFactory
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xalan.jar Entry Name: META-INF/services/org.apache.axis.EngineConfigurationFactory
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\axis.jar Entry Name: META-INF/services/org.apache.axis.EngineConfigurationFactory
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\dom3-xercesImpl.jar Entry Name: META-INF/services/org.apache.axis.EngineConfigurationFactory
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\piccolo.jar Entry Name: META-INF/services/org.apache.axis.EngineConfigurationFactory
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xerces.jar Entry Name: META-INF/services/org.apache.axis.EngineConfigurationFactory
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xercesImpl.jar Entry Name: org/apache/commons/discovery/resource/names/DiscoverMappedNames$1.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xalan.jar Entry Name: org/apache/commons/discovery/resource/names/DiscoverMappedNames$1.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\axis.jar Entry Name: org/apache/commons/discovery/resource/names/DiscoverMappedNames$1.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xercesImpl.jar Entry Name: org/apache/axis/configuration/EngineConfigurationFactoryDefault.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xalan.jar Entry Name: org/apache/axis/configuration/EngineConfigurationFactoryDefault.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\axis.jar Entry Name: org/apache/axis/configuration/EngineConfigurationFactoryDefault.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xercesImpl.jar Entry Name: org/apache/axis/configuration/EngineConfigurationFactoryDefault.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xalan.jar Entry Name: org/apache/axis/configuration/EngineConfigurationFactoryDefault.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\axis.jar Entry Name: org/apache/axis/configuration/EngineConfigurationFactoryDefault.class

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message