axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ronald Brindl (JIRA)" <j...@apache.org>
Subject [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
Date Thu, 11 Aug 2011 13:25:36 GMT

    [ 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


Mime
View raw message