Ho un'applicazione java caricata pesante utilizzando hirbernate. E ho usato il DBCP del pool di connessioni, ma ha avuto problemi con la perdita delle connessioni. Poi sono passato a c3p0. Ma ora a volte si blocca e non so perché. Come qui:Qual è la scelta migliore per la libreria di pool di connessioni al database? (Problema c3p0)
"[email protected]" prio=10 tid=0x00007fa6b0940000 nid=0x4e12 runnable [0x00007fa6f8f1c000]
java.lang.Thread.State: RUNNABLE
at com.mchange.v2.resourcepool.BasicResourcePool.doCheckinManaged(BasicResourcePool.java:1258)
at com.mchange.v2.resourcepool.BasicResourcePool.checkinResource(BasicResourcePool.java:647)
- locked <0x00007fa7286d9728> (a com.mchange.v2.resourcepool.BasicResourcePool)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$ConnectionEventListenerImpl.doCheckinResource(C3P0PooledConnectionPool.java:636)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$ConnectionEventListenerImpl.connectionClosed(C3P0PooledConnectionPool.java:630)
at com.mchange.v2.c3p0.util.ConnectionEventSupport.fireConnectionClosed(ConnectionEventSupport.java:55)
at com.mchange.v2.c3p0.impl.NewPooledConnection.fireConnectionClosed(NewPooledConnection.java:510)
at com.mchange.v2.c3p0.impl.NewPooledConnection.markClosedProxyConnection(NewPooledConnection.java:381)
at com.mchange.v2.c3p0.impl.NewProxyConnection.close(NewProxyConnection.java:1246)
- locked <0x00007fa794ccf020> (a com.mchange.v2.c3p0.impl.NewProxyConnection)
at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.closeConnection(LocalDataSourceConnectionProvider.java:96)
at org.hibernate.jdbc.ConnectionManager.closeConnection(ConnectionManager.java:474)
at org.hibernate.jdbc.ConnectionManager.cleanup(ConnectionManager.java:408)
at org.hibernate.jdbc.ConnectionManager.close(ConnectionManager.java:347)
at org.hibernate.impl.SessionImpl.close(SessionImpl.java:325)
at org.springframework.orm.hibernate3.SessionFactoryUtils.closeSession(SessionFactoryUtils.java:791)
at org.springframework.orm.hibernate3.SessionFactoryUtils.closeSessionOrRegisterDeferredClose(SessionFactoryUtils.java:777)
at org.springframework.orm.hibernate3.SessionFactoryUtils.releaseSession(SessionFactoryUtils.java:755)
' mio discarica stacktrace ha dimostrato che questa discussione bloccato tutti i miei altri thread, con serratura < 0x00007fa7286d9728>, quindi in un server mentre è stato completamente bloccato. Non sono sicuro di quanto tempo venga eseguito questo thread, se un thread sta bloccando tutti gli altri thread per un lungo periodo di tempo, o se il tempo consumato da questo thread è stato estremamente lungo, ma il risultato è stato che il mio sistema è stato completamente bloccato ed estremamente rallentato. Ho cercato spesso su Google, ma non so come risolvere questo problema. Ho bisogno di piscina per chiudere la connessione e finire il battistrada il prima possibile. Dovrei usare qualche altro pool di connessione? Per me è assolutamente necessario che questa libreria di pool sia al 100% salvata, senza deadlock, lifelocks, starvations, anche se è un po 'più lenta di altre librerie.
Grazie per qualsiasi aiuto
Ci scusiamo per aver imbastito un thread precedente, ma qualche tempo fa ho fatto alcune ricerche sull'argomento: http://stackoverflow.com/questions/5640146/java-jdbc-connection-pool-library-choice-in- 2011 –