Details
Description
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.
Attachments
Attachments
Issue Links
- duplicates
-
AXIS2-4524 Caching BeanInfo in adb module's BeanUtil improves performance
- Resolved
-
AXIS2-4878 Simple BeanInfo cache in BeanUtil.java helped us go from 48 second to 8 second request
- Resolved
- is duplicated by
-
AXIS2-5119 ComplexType array return performance issue
- Resolved