-
Type:
Suggestion
-
Resolution: Fixed
-
Component/s: None
Performance testing showed that up to 30% of threads at a time are blocked inside IntrospectorCacheImpl class inside velocity. This is a big bottleneck. We can improve the synchronization here by using better data structures (ConcurrentHashMap instead of synchronizing on the whole 'get' method). CPU snapshot reports that getPropertyGet takes 33% of overall execution time and Introspector.getMethod wich uses the same cache(ie. is blocked on the same synchronization block) takes 20% (on my machine).
I have made some quick changes to velocity caching to get rid of synchronization where possible and run the tests.It decreased the average response time around 10-15% on my machine. I expect the improvement to be not so dramatic on the build box because I have database on the same box as confluence so there is very little IO time.
- is related to
-
CONFSERVER-14150 Reduce synchronization bottleneck on OsgiPlugin.isEnabled
- Closed
-
CONFSERVER-14181 Reduce blocking inside ognl.OgnlRuntime
- Closed