私はhirbernateを使用して重いロードされたJavaアプリケーションを持っています。そして、私は接続プールDBCPとして使用していましたが、接続のロスに問題がありました。私はc3p0に切り替えました。しかし、今は時々スレッドをbloksと私はなぜか知りません。ここのように:データベース接続プーリング・ライブラリの最良の選択肢は何ですか? (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)
「 私のスタックトレースダンプはしばらくの間サーバがcompletlyブロックされたでので、このスレッドは、ロック< 0x00007fa7286d9728>で、すべての私の他のスレッドをブロックしていることを示しました。あるスレッドが他のスレッドを長時間ブロックしていた場合や、このスレッドの時間が極端に長くても、結果が、私のシステムが完全にブロックされ、極端に遅くなった場合、このスレッドの実行時間はわかりません。私はたくさんのグーグルで探せましたが、この問題の解決方法はわかりません。私は接続を閉じてできるだけ早くトレッドを終了するためにプールが必要です。他の接続プールを使用する必要がありますか?私にとっては、このプールライブラリは他のライブラリより少し遅くても100%節約、デッドロック、ライフロック、starvationsは絶対に必要です。あなたは何を意味するか任意のヘルプ
申し訳ありませんが古いスレッドをバンプアップしていますが、しばらく前に私はそのテーマについていくつかの小さな研究を行いました:http://stackoverflow.com/questions/5640146/java-jdbc-connection-pool-library-choice-in- 2011 –