我在java应用程序中使用hibernate和mysql数据库 我从hibernate 3迁移到hibernate 4 但是在新的hibernate繁忙的线程数量增加,它使用所有的连接 所以我的应用程序停止工作,不能再提供连接。 我的hibernate.cfg配置如下:
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<property name="hibernate.current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="hibernate.cache.use_second_level_cache">true</property>
<!--<property name="hibernate.cache.provider_class">
net.sf.ehcache.hibernate.EhCacheProvider
</property>-->
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory</property>
<property name="hibernate.cache.use_query_cache">true</property>
<!--<property name="hibernate.generate_statistics">true</property>-->
<!--C3P0 configure-->
<property name="hibernate.connection.provider_class">
org.hibernate.connection.C3P0ConnectionProvider
</property>
<property name="hibernate.c3p0.acquire_increment">3</property>
<property name="hibernate.c3p0.idle_test_period">144</property>
<property name="hibernate.c3p0.timeout">60</property>
<property name="hibernate.c3p0.max_size">30</property>
<property name="hibernate.c3p0.min_size">3</property>
<property name="hibernate.c3p0.max_statements">0</property>
<property name="hibernate.c3p0.preferredTestQuery">select 1;</property>
<property name="hibernate.c3p0.validate">true</property>
<property name="hibernate.c3p0.testConnectionOnCheckout">true</property>
我将超时设置为较小值并增加max_size 并设置use_second_level_cache = false 但没有改进
问题是什么
非常感谢
答案 0 :(得分:0)
所以这听起来非常类似于应用程序中的连接泄漏。使用c3p0 config params unreturnedConnectionTimeout
和debugUnreturnedConnectionStackTraces
进行调试。
请参阅here。
(在你的hibernate.cfg中,他们是hibernate.c3p0.unreturnedConnectionTimeout
和hibernate.c3p0.debugUnreturnedConnectionStackTraces
。)