You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Ronald Brindl (JIRA)" <ji...@apache.org> on 2011/08/11 15:17:27 UTC

[jira] [Created] (AXIS2-5118) In high load scenarios with many threads, the call to Introspector.getBeanInfo(Class,Class) causes high synchronization resulting in system stall

In high load scenarios with many threads, the call to Introspector.getBeanInfo(Class,Class) causes high synchronization resulting in system stall
-------------------------------------------------------------------------------------------------------------------------------------------------

                 Key: AXIS2-5118
                 URL: https://issues.apache.org/jira/browse/AXIS2-5118
             Project: Axis2
          Issue Type: Improvement
          Components: adb
    Affects Versions: 1.5.4
         Environment: Tomcat 7 with axis2 webservices
            Reporter: Ronald Brindl


I have a high load scenario, where a Clustered Web frontend does Webservice calls to a Backend Webservices. 
There are around 200 Threads handling the webservices.
The CPU load of the machine went to near zero.
Using dynatrace, we realized, that all the calls went through BeanUtils.getPropertyQnameList, which in turn calls Introspector.getBeanInfo(beanClass, beanClass.getSuperclass());
This again calls WebAppClassLoader.loadClass(String name, boolean resolve), which is synchronized.

I fixed this problem by modifying BeanUtil.getPropertyQnameList so that it caches BeanInfo objects.


--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org


[jira] [Commented] (AXIS2-5118) In high load scenarios with many threads, the call to Introspector.getBeanInfo(Class,Class) causes high synchronization resulting in system stall

Posted by "Ronald Brindl (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/AXIS2-5118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13084013#comment-13084013 ] 

Ronald Brindl commented on AXIS2-5118:
--------------------------------------

Looks like i have not searched hard enough before entering this issue.
I understand the concerns in AXIS2-4524. However, they are no issue for us, since the application involved is a demo application for load Testing, which gets restarted by CI completely, anyway. 
Nevertheless, I am looking forward to a generic solution. Integration of the cache into some Webapp-scoped context looks promising!

> In high load scenarios with many threads, the call to Introspector.getBeanInfo(Class,Class) causes high synchronization resulting in system stall
> -------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: AXIS2-5118
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5118
>             Project: Axis2
>          Issue Type: Improvement
>          Components: adb
>    Affects Versions: 1.5.4
>         Environment: Tomcat 7 with axis2 webservices
>            Reporter: Ronald Brindl
>         Attachments: BeanInfoCache.java, BeanInfoCacheTest.java, BeanUtil.java
>
>
> I have a high load scenario, where a Clustered Web frontend does Webservice calls to a Backend Webservices. 
> There are around 200 Threads handling the webservices.
> The CPU load of the machine went to near zero.
> Using dynatrace, we realized, that all the calls went through BeanUtils.getPropertyQnameList, which in turn calls Introspector.getBeanInfo(beanClass, beanClass.getSuperclass());
> This again calls WebAppClassLoader.loadClass(String name, boolean resolve), which is synchronized.
> I fixed this problem by modifying BeanUtil.getPropertyQnameList so that it caches BeanInfo objects.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org


[jira] [Commented] (AXIS2-5118) In high load scenarios with many threads, the call to Introspector.getBeanInfo(Class,Class) causes high synchronization resulting in system stall

Posted by "Hudson (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/AXIS2-5118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13138761#comment-13138761 ] 

Hudson commented on AXIS2-5118:
-------------------------------

Integrated in axis2-1.6 #141 (See [https://builds.apache.org/job/axis2-1.6/141/])
    AXIS2-4524 / AXIS2-4878 / AXIS2-5118 / AXIS2-5119: Merged r1166132 and r1190499 to the 1.6 branch.

veithen : 
Files : 
* /axis/axis2/java/core/branches/1_6
* /axis/axis2/java/core/branches/1_6/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java
* /axis/axis2/java/core/branches/1_6/modules/kernel/src/org/apache/axis2/classloader/BeanInfoCache.java
* /axis/axis2/java/core/branches/1_6/modules/kernel/src/org/apache/axis2/classloader/BeanInfoCachingClassLoader.java
* /axis/axis2/java/core/branches/1_6/modules/kernel/src/org/apache/axis2/classloader/JarFileClassLoader.java
* /axis/axis2/java/core/branches/1_6/modules/kernel/src/org/apache/axis2/deployment/DeploymentClassLoader.java

                
> In high load scenarios with many threads, the call to Introspector.getBeanInfo(Class,Class) causes high synchronization resulting in system stall
> -------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: AXIS2-5118
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5118
>             Project: Axis2
>          Issue Type: Improvement
>          Components: adb
>    Affects Versions: 1.5.4
>         Environment: Tomcat 7 with axis2 webservices
>            Reporter: Ronald Brindl
>            Assignee: Andreas Veithen
>             Fix For: 1.6.2, 1.7.0
>
>         Attachments: BeanInfoCache.java, BeanInfoCacheTest.java, BeanUtil.java
>
>
> I have a high load scenario, where a Clustered Web frontend does Webservice calls to a Backend Webservices. 
> There are around 200 Threads handling the webservices.
> The CPU load of the machine went to near zero.
> Using dynatrace, we realized, that all the calls went through BeanUtils.getPropertyQnameList, which in turn calls Introspector.getBeanInfo(beanClass, beanClass.getSuperclass());
> This again calls WebAppClassLoader.loadClass(String name, boolean resolve), which is synchronized.
> I fixed this problem by modifying BeanUtil.getPropertyQnameList so that it caches BeanInfo objects.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org


[jira] [Commented] (AXIS2-5118) In high load scenarios with many threads, the call to Introspector.getBeanInfo(Class,Class) causes high synchronization resulting in system stall

Posted by "Hudson (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/AXIS2-5118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13138859#comment-13138859 ] 

Hudson commented on AXIS2-5118:
-------------------------------

Integrated in Axis2 #1085 (See [https://builds.apache.org/job/Axis2/1085/])
    AXIS2-4524 / AXIS2-4878 / AXIS2-5118 / AXIS2-5119: Also implement BeanInfoCachingClassLoader on JarFileClassLoader so that the cache works in all deployment scenarios.

veithen : 
Files : 
* /axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/classloader/JarFileClassLoader.java

                
> In high load scenarios with many threads, the call to Introspector.getBeanInfo(Class,Class) causes high synchronization resulting in system stall
> -------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: AXIS2-5118
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5118
>             Project: Axis2
>          Issue Type: Improvement
>          Components: adb
>    Affects Versions: 1.5.4
>         Environment: Tomcat 7 with axis2 webservices
>            Reporter: Ronald Brindl
>            Assignee: Andreas Veithen
>             Fix For: 1.6.2, 1.7.0
>
>         Attachments: BeanInfoCache.java, BeanInfoCacheTest.java, BeanUtil.java
>
>
> I have a high load scenario, where a Clustered Web frontend does Webservice calls to a Backend Webservices. 
> There are around 200 Threads handling the webservices.
> The CPU load of the machine went to near zero.
> Using dynatrace, we realized, that all the calls went through BeanUtils.getPropertyQnameList, which in turn calls Introspector.getBeanInfo(beanClass, beanClass.getSuperclass());
> This again calls WebAppClassLoader.loadClass(String name, boolean resolve), which is synchronized.
> I fixed this problem by modifying BeanUtil.getPropertyQnameList so that it caches BeanInfo objects.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org


[jira] [Assigned] (AXIS2-5118) In high load scenarios with many threads, the call to Introspector.getBeanInfo(Class,Class) causes high synchronization resulting in system stall

Posted by "Andreas Veithen (Assigned) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/AXIS2-5118?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Andreas Veithen reassigned AXIS2-5118:
--------------------------------------

    Assignee: Andreas Veithen
    
> In high load scenarios with many threads, the call to Introspector.getBeanInfo(Class,Class) causes high synchronization resulting in system stall
> -------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: AXIS2-5118
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5118
>             Project: Axis2
>          Issue Type: Improvement
>          Components: adb
>    Affects Versions: 1.5.4
>         Environment: Tomcat 7 with axis2 webservices
>            Reporter: Ronald Brindl
>            Assignee: Andreas Veithen
>             Fix For: 1.6.2, 1.7.0
>
>         Attachments: BeanInfoCache.java, BeanInfoCacheTest.java, BeanUtil.java
>
>
> I have a high load scenario, where a Clustered Web frontend does Webservice calls to a Backend Webservices. 
> There are around 200 Threads handling the webservices.
> The CPU load of the machine went to near zero.
> Using dynatrace, we realized, that all the calls went through BeanUtils.getPropertyQnameList, which in turn calls Introspector.getBeanInfo(beanClass, beanClass.getSuperclass());
> This again calls WebAppClassLoader.loadClass(String name, boolean resolve), which is synchronized.
> I fixed this problem by modifying BeanUtil.getPropertyQnameList so that it caches BeanInfo objects.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org


[jira] [Issue Comment Edited] (AXIS2-5118) In high load scenarios with many threads, the call to Introspector.getBeanInfo(Class,Class) causes high synchronization resulting in system stall

Posted by "Ronald Brindl (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/AXIS2-5118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13083105#comment-13083105 ] 

Ronald Brindl edited comment on AXIS2-5118 at 8/11/11 1:20 PM:
---------------------------------------------------------------

Added BeanInfoCache.java, which caches BeanInfo Objects using a limited linked list, which removes oldest entries based on maximum size (currently MAX_SIZE = 10). 
It is thread safe using a ReentrandReadWrite Lock for accessing its backing list.

In BeanInfo i replaced the call

BeanInfo beanInfo = Introspector.getBeanInfo(beanClass, beanClass.getSuperclass());

with 

            BeanInfo beanInfo = BeanInfoCache.get(beanClass);
            if(beanInfo == null) {
            	beanInfo = Introspector.getBeanInfo(beanClass, beanClass.getSuperclass());
            	BeanInfoCache.put(beanClass, beanInfo);
            }



      was (Author: rbrindl):
    Added BeanInfoCache.java, which caches BeanInfo Objects using a limited linked list, which removes oldest entries based on maximum size (currently MAX_SIZE = 10). 
It is thread safe using a ReentrandReadWrite Lock for accessing its backing list.

In BeanInfo i replaced the call
{code}
BeanInfo beanInfo = Introspector.getBeanInfo(beanClass, beanClass.getSuperclass());
{code}
with 
{code}
            BeanInfo beanInfo = BeanInfoCache.get(beanClass);
            if(beanInfo == null) {
            	beanInfo = Introspector.getBeanInfo(beanClass, beanClass.getSuperclass());
            	BeanInfoCache.put(beanClass, beanInfo);
            }
{code}

  
> In high load scenarios with many threads, the call to Introspector.getBeanInfo(Class,Class) causes high synchronization resulting in system stall
> -------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: AXIS2-5118
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5118
>             Project: Axis2
>          Issue Type: Improvement
>          Components: adb
>    Affects Versions: 1.5.4
>         Environment: Tomcat 7 with axis2 webservices
>            Reporter: Ronald Brindl
>         Attachments: BeanInfoCache.java, BeanInfoCacheTest.java, BeanUtil.java
>
>
> I have a high load scenario, where a Clustered Web frontend does Webservice calls to a Backend Webservices. 
> There are around 200 Threads handling the webservices.
> The CPU load of the machine went to near zero.
> Using dynatrace, we realized, that all the calls went through BeanUtils.getPropertyQnameList, which in turn calls Introspector.getBeanInfo(beanClass, beanClass.getSuperclass());
> This again calls WebAppClassLoader.loadClass(String name, boolean resolve), which is synchronized.
> I fixed this problem by modifying BeanUtil.getPropertyQnameList so that it caches BeanInfo objects.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org


[jira] [Commented] (AXIS2-5118) In high load scenarios with many threads, the call to Introspector.getBeanInfo(Class,Class) causes high synchronization resulting in system stall

Posted by "Hudson (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/AXIS2-5118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13098903#comment-13098903 ] 

Hudson commented on AXIS2-5118:
-------------------------------

Integrated in Axis2 #978 (See [https://builds.apache.org/job/Axis2/978/])
    AXIS2-4524 / AXIS2-4878 / AXIS2-5118 / AXIS2-5119: Initial implementation of a BeanInfo cache to speed up POJO services.

veithen : 
Files : 
* /axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java
* /axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/classloader/BeanInfoCache.java
* /axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/classloader/BeanInfoCachingClassLoader.java
* /axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/deployment/DeploymentClassLoader.java


> In high load scenarios with many threads, the call to Introspector.getBeanInfo(Class,Class) causes high synchronization resulting in system stall
> -------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: AXIS2-5118
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5118
>             Project: Axis2
>          Issue Type: Improvement
>          Components: adb
>    Affects Versions: 1.5.4
>         Environment: Tomcat 7 with axis2 webservices
>            Reporter: Ronald Brindl
>         Attachments: BeanInfoCache.java, BeanInfoCacheTest.java, BeanUtil.java
>
>
> I have a high load scenario, where a Clustered Web frontend does Webservice calls to a Backend Webservices. 
> There are around 200 Threads handling the webservices.
> The CPU load of the machine went to near zero.
> Using dynatrace, we realized, that all the calls went through BeanUtils.getPropertyQnameList, which in turn calls Introspector.getBeanInfo(beanClass, beanClass.getSuperclass());
> This again calls WebAppClassLoader.loadClass(String name, boolean resolve), which is synchronized.
> I fixed this problem by modifying BeanUtil.getPropertyQnameList so that it caches BeanInfo objects.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org


[jira] [Updated] (AXIS2-5118) In high load scenarios with many threads, the call to Introspector.getBeanInfo(Class,Class) causes high synchronization resulting in system stall

Posted by "Ronald Brindl (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/AXIS2-5118?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ronald Brindl updated AXIS2-5118:
---------------------------------

    Attachment: BeanInfoCacheTest.java
                BeanUtil.java
                BeanInfoCache.java

Added BeanInfoCache.java, which caches BeanInfo Objects using a limited linked list, which removes oldest entries based on maximum size (currently MAX_SIZE = 10). 
It is thread safe using a ReentrandReadWrite Lock for accessing its backing list.

In BeanInfo i replaced the call
{code}
BeanInfo beanInfo = Introspector.getBeanInfo(beanClass, beanClass.getSuperclass());
{code}
with 
{code}
            BeanInfo beanInfo = BeanInfoCache.get(beanClass);
            if(beanInfo == null) {
            	beanInfo = Introspector.getBeanInfo(beanClass, beanClass.getSuperclass());
            	BeanInfoCache.put(beanClass, beanInfo);
            }
{code}


> In high load scenarios with many threads, the call to Introspector.getBeanInfo(Class,Class) causes high synchronization resulting in system stall
> -------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: AXIS2-5118
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5118
>             Project: Axis2
>          Issue Type: Improvement
>          Components: adb
>    Affects Versions: 1.5.4
>         Environment: Tomcat 7 with axis2 webservices
>            Reporter: Ronald Brindl
>         Attachments: BeanInfoCache.java, BeanInfoCacheTest.java, BeanUtil.java
>
>
> I have a high load scenario, where a Clustered Web frontend does Webservice calls to a Backend Webservices. 
> There are around 200 Threads handling the webservices.
> The CPU load of the machine went to near zero.
> Using dynatrace, we realized, that all the calls went through BeanUtils.getPropertyQnameList, which in turn calls Introspector.getBeanInfo(beanClass, beanClass.getSuperclass());
> This again calls WebAppClassLoader.loadClass(String name, boolean resolve), which is synchronized.
> I fixed this problem by modifying BeanUtil.getPropertyQnameList so that it caches BeanInfo objects.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org


[jira] [Commented] (AXIS2-5118) In high load scenarios with many threads, the call to Introspector.getBeanInfo(Class,Class) causes high synchronization resulting in system stall

Posted by "Ronald Brindl (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/AXIS2-5118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13083107#comment-13083107 ] 

Ronald Brindl commented on AXIS2-5118:
--------------------------------------

I understand that the call to BeanInfoCache is not 100% thread safe, since it might happen, that between getting null from cache, another thread could do so as well before the cache is filled with the Beaninfor. This might result in a race condition. I consider this a minor risk, the worst that can happen is that the BeanInfo is fetched twice. 
I did heavy load tests with 500 concurrent virtual users running complex Scenarios and did not see any problem there.

> In high load scenarios with many threads, the call to Introspector.getBeanInfo(Class,Class) causes high synchronization resulting in system stall
> -------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: AXIS2-5118
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5118
>             Project: Axis2
>          Issue Type: Improvement
>          Components: adb
>    Affects Versions: 1.5.4
>         Environment: Tomcat 7 with axis2 webservices
>            Reporter: Ronald Brindl
>         Attachments: BeanInfoCache.java, BeanInfoCacheTest.java, BeanUtil.java
>
>
> I have a high load scenario, where a Clustered Web frontend does Webservice calls to a Backend Webservices. 
> There are around 200 Threads handling the webservices.
> The CPU load of the machine went to near zero.
> Using dynatrace, we realized, that all the calls went through BeanUtils.getPropertyQnameList, which in turn calls Introspector.getBeanInfo(beanClass, beanClass.getSuperclass());
> This again calls WebAppClassLoader.loadClass(String name, boolean resolve), which is synchronized.
> I fixed this problem by modifying BeanUtil.getPropertyQnameList so that it caches BeanInfo objects.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org


[jira] [Resolved] (AXIS2-5118) In high load scenarios with many threads, the call to Introspector.getBeanInfo(Class,Class) causes high synchronization resulting in system stall

Posted by "Andreas Veithen (Resolved) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/AXIS2-5118?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Andreas Veithen resolved AXIS2-5118.
------------------------------------

       Resolution: Duplicate
    Fix Version/s: 1.7.0
                   1.6.2
    
> In high load scenarios with many threads, the call to Introspector.getBeanInfo(Class,Class) causes high synchronization resulting in system stall
> -------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: AXIS2-5118
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5118
>             Project: Axis2
>          Issue Type: Improvement
>          Components: adb
>    Affects Versions: 1.5.4
>         Environment: Tomcat 7 with axis2 webservices
>            Reporter: Ronald Brindl
>             Fix For: 1.6.2, 1.7.0
>
>         Attachments: BeanInfoCache.java, BeanInfoCacheTest.java, BeanUtil.java
>
>
> I have a high load scenario, where a Clustered Web frontend does Webservice calls to a Backend Webservices. 
> There are around 200 Threads handling the webservices.
> The CPU load of the machine went to near zero.
> Using dynatrace, we realized, that all the calls went through BeanUtils.getPropertyQnameList, which in turn calls Introspector.getBeanInfo(beanClass, beanClass.getSuperclass());
> This again calls WebAppClassLoader.loadClass(String name, boolean resolve), which is synchronized.
> I fixed this problem by modifying BeanUtil.getPropertyQnameList so that it caches BeanInfo objects.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org


[jira] [Commented] (AXIS2-5118) In high load scenarios with many threads, the call to Introspector.getBeanInfo(Class,Class) causes high synchronization resulting in system stall

Posted by "Andreas Veithen (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/AXIS2-5118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13083178#comment-13083178 ] 

Andreas Veithen commented on AXIS2-5118:
----------------------------------------

This is basically a duplicate of AXIS2-4524 and AXIS2-4878, and the same concern applies here: implementing the cache like that will result in a class loader leak.

> In high load scenarios with many threads, the call to Introspector.getBeanInfo(Class,Class) causes high synchronization resulting in system stall
> -------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: AXIS2-5118
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5118
>             Project: Axis2
>          Issue Type: Improvement
>          Components: adb
>    Affects Versions: 1.5.4
>         Environment: Tomcat 7 with axis2 webservices
>            Reporter: Ronald Brindl
>         Attachments: BeanInfoCache.java, BeanInfoCacheTest.java, BeanUtil.java
>
>
> I have a high load scenario, where a Clustered Web frontend does Webservice calls to a Backend Webservices. 
> There are around 200 Threads handling the webservices.
> The CPU load of the machine went to near zero.
> Using dynatrace, we realized, that all the calls went through BeanUtils.getPropertyQnameList, which in turn calls Introspector.getBeanInfo(beanClass, beanClass.getSuperclass());
> This again calls WebAppClassLoader.loadClass(String name, boolean resolve), which is synchronized.
> I fixed this problem by modifying BeanUtil.getPropertyQnameList so that it caches BeanInfo objects.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org