Tôi có ứng dụng java được tải nặng bằng hirbernate. Và tôi sử dụng để sử dụng như là kết nối DBCP hồ bơi, nhưng nó đã có vấn đề với các kết nối mất mát. Hơn tôi chuyển sang c3p0. Nhưng bây giờ nó đôi khi bloks thread và tôi không biết tại sao. Giống như ở đây:Lựa chọn tốt nhất cho thư viện kết nối cơ sở dữ liệu kết nối là gì? (c3p0 problem)
"[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)
' stacktrace bãi của tôi cho thấy rằng chủ đề này chặn tất cả các chủ đề khác của tôi, với khóa < 0x00007fa7286d9728>, như vậy trong một máy chủ trong khi đã hoàn toàn bị chặn. Tôi không chắc chuỗi này chạy bao lâu, nếu một luồng đang chặn tất cả các luồng khác trong một thời gian dài, hoặc nếu thời gian tiêu thụ bởi luồng này là cực kỳ dài, nhưng kết quả là, hệ thống của tôi đã bị chặn hoàn toàn và bị chậm lại. Tôi googled rất nhiều, nhưng tôi không biết làm thế nào để giải quyết vấn đề này. Tôi cần hồ bơi để đóng kết nối và kết thúc tread càng sớm càng tốt. Tôi có nên sử dụng một số hồ bơi kết nối khác không? Đối với tôi nó là hoàn toàn cần thiết rằng thư viện hồ bơi này là 100% tiết kiệm, không có deadlocks, lifelocks, đói, ngay cả khi nó là hơi chậm hơn so với các thư viện khác.
cảm ơn sự giúp đỡ nào
Xin lỗi vì đã gặp phải một chuỗi cũ, nhưng một thời gian trước, tôi đã thực hiện một số nghiên cứu nhỏ về chủ đề: http://stackoverflow.com/questions/5640146/java-jdbc-connection-pool-library-choice-in- 2011 –