tôi tiếp tục nhận được ngoại lệ này trong nhật ký Tomcat của tôi:C3P0 bế tắc rõ ràng ngoại lệ
com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector run
WARNING: com[email protected]76b28200 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector run
WARNING: com[email protected]76b28200 -- APPARENT DEADLOCK!!! Complete Status:
Managed Threads: 3
Active Threads: 3
Active Tasks:
[email protected]18 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1)
[email protected]e4 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0)
[email protected]d8 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2)
Pending Tasks:
[email protected]53
[email protected]24
Pool thread stack traces:
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5,main]
java.lang.Thread.sleep(Native Method)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5,main]
java.lang.Thread.sleep(Native Method)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,main]
java.lang.Thread.sleep(Native Method)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Tôi đang sử dụng Hibernate 3.6.2 và C3P0 0.9.1.2 với MySQL. Sau một vài giờ tìm kiếm Google, ngoại lệ APPARENT DEADLOCK này dường như thường được kết hợp với bộ nhớ đệm báo cáo đã chuẩn bị. Đây là cấu hình C3P0 của tôi trong hibernate.cfg.xml của tôi:
<propertyname="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="hibernate.c3p0.acquire_increment">5</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">60</property>
<property name="hibernate.c3p0.idle_test_period">120</property>
<property name="hibernate.c3p0.timeout">180</property>
<property name="hibernate.c3p0.max_statements">0</property>
Tôi không thực hiện bất kỳ lưu ý bộ nhớ đệm nào. Bất kỳ gợi ý về những gì là sai ở đây sẽ được đánh giá rất nhiều.
Dường như nâng cấp c3p0 lên phiên bản 0.9.2.1 của tôi đã thực hiện thủ thuật! Cảm ơn @SteveWaldman về mẹo. – corderazo00
Dường như nó đã không làm các trick, APPARENT DEADLOCK là trở lại ... Có cách nào để giám sát các hoạt động của c3p0 gần hơn hoặc ở mức thấp hơn để xem tại sao chính xác nó treo khi cố gắng để có được một kết nối? – corderazo00
Xóa bộ nhớ cache của máy chủ web (tomcat/work/Catalina) có liên quan gì không? Tôi đã tìm thấy một số chủ đề mà mọi người cho rằng điều này đã giải quyết được vấn đề của họ. – corderazo00