We are facing a performance degradation caused by hibernate due to most of the time spent on getstatus() method present in class oracle.ucp.common.UniversalPooledConnectionImpl. This degradation is reported by the profiling tool DynaTrace. We are still trying to figure out the exact functionality of the method getstatus().
We have the Dynatrace session for the same functionality, before degradation and after degradation.
- We looked at the query execution time, and there seems no degradation in it. - No N+1 query problem. Only single query. - Query gives back around 60000 records. It seems like most time is spent on Hibernate analyzing the result of query and as per Dynatrace profiler. Most of the time is spent on getsstatus() method of the UniversalPooledConnectionImpl and this method is invoked by hibernate. And there is significant increase (x4) in number of times this method is called which is leading to the delay. - Project stack: Spring/Hibernate/JPA/oracle UCP. Hardware: SunOS 5.10 (X86).
There is no change in query, data, hibernate version, UCP version that we were using. The only change we made is we moved our hardware from Solaris SPARC to Solaris X86 machines. But i really do not see how this could lead to hibernate performance degradation.
I searched for the pointers on web, but could not land anywhere. Please help.
|