我做一個項目合併Hibernate和Spring的Java Web應用程序,Linux環境下使用Tomcat創建。由於Mysql 8小時超時問題,我們希望使用C3P0來管理我們的Mysql數據庫的連接池。 但是當我們使用它時,我們有很多創建的線程。我想通了東陽我對每個請求做了所有他們與一個內存狀態的打印,顯示我的提高內存和那種線程:許多線程使用C3P0與Hibernate /春
- 名稱:C3P0PooledConnectionPoolManager [identityToken-> 1hged7o8r13kpj7n1h3ycia | 39c446 ] -HelperThread-#0守護進程:真正的組! maingroupParent:system alive:true interrupted:false
- name:C3P0PooledConnectionPoolManager [identityToken-> 1hged7o8r13kpj7n1h3ycia | 17ec0e8] -AdminTaskTimer守護進程:真正的組!主要groupParent:系統活着:真打斷:假
它可以產生500個多線程像這樣的人,有足夠的時間之後。
這裏是我的hibernate.cfg.xml:
<property name="connection.provider_class">
org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="hibernate.c3p0.acquire_increment">1</property>
<property name="hibernate.c3p0.idle_test_period">5</property>
<property name="hibernate.c3p0.max_size">100</property>
<property name="hibernate.c3p0.max_statements">100</property>
<property name="hibernate.c3p0.min_size">10</property>
<property name="hibernate.c3p0.timeout">5</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/myBase</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.default_schema">myProject</property>
<property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>
<property name="show_sql">false</property>
<property name="cache.provider_class">
org.hibernate.cache.NoCacheProvider
</property>
我也嘗試添加C3P0化子性質的文件,但除了減少輔助線程數,它不刪除unsused螺紋:
c3p0.maxStatements=5
c3p0.maxIdleTime=10
c3p0.numHelperThreads=1
c3p0.testConnectionOnCheckout=true
c3p0.preferredTestQuery=SELECT 1
c3p0.initialPoolSize=1
c3p0.minPoolSize=1
c3p0.maxPoolSize=10
c3p0.acquireIncrement=1
c3p0.idleConnectionTestPeriod=1
沒有人有,爲什麼出現這種情況,如何解決這個問題的想法?
非常感謝。
添加idleConnectionTestPeriod = 1的方式過於激進。我不會推薦它。 –