我在我的服務器上部署了spring/hibernate/mysql。由於有些日子我面臨的問題是我的應用程序似乎打開了很多與數據庫的連接。休眠/彈出:很多(數千)打開的連接數據庫
tcp6 0 0 ************:53547 ************:3306 TIME_WAIT 0 0 -
tcp6 0 0 ************:53595 ************:3306 TIME_WAIT 0 0 -
tcp6 0 0 ************:53645 ************:3306 TIME_WAIT 0 0 -
tcp6 0 0 ************:34986 ************:3306 TIME_WAIT 0 0 -
tcp6 0 0 ************:53669 ************:3306 TIME_WAIT 0 0 -
tcp6 0 0 ************:53710 ************:3306 TIME_WAIT 0 0 -
tcp6 0 0 ************:53757 ************:3306 TIME_WAIT 0 0 -
tcp6 0 0 ************:53716 ************:3306 TIME_WAIT 0 0 -
tcp6 0 0 ************:53627 ************:3306 TIME_WAIT 0 0 -
tcp6 0 0 ************:53752 ************:3306 TIME_WAIT 0 0 -
tcp6 0 0 ************:53505 ************:3306 TIME_WAIT 0 0 -
tcp6 0 0 ************:53549 ************:3306 TIME_WAIT 0 0 -
tcp6 0 0 ************:35185 ************:3306 TIME_WAIT 0 0 -
tcp6 0 0 ************:53604 ************:3306 TIME_WAIT 0 0 -
tcp6 0 0 ************:35331 ************:3306 TIME_WAIT 0 0 -
tcp6 0 0 ************:53488 ************:3306 TIME_WAIT 0 0 -
tcp6 0 0 ************:34938 ************:3306 TIME_WAIT 0 0 -
tcp6 0 0 ************:34987 ************:3306 TIME_WAIT 0 0 -
tcp6 0 0 ************:53695 ************:3306 TIME_WAIT 0 0 -
tcp6 0 0 ************:35380 ************:3306 TIME_WAIT 0 0 -
tcp6 0 0 ************:53651 ************:3306 TIME_WAIT 0 0 -
然而,在MySQL工作臺服務器運行狀況選項卡找我的MySQL數據庫的時候,它看起來一切都將被罰款:我從netstat的輸出,它看起來像這樣(IP地址混淆)服用此提示(見附件截圖)。
此外我的應用程序有正常的性能。
我們目前正在積極開發應用程序,但我們看不到任何影響此行爲的代碼更改。顯然肯定有變化,但它也可能是一個配置問題,或者其他什麼。
它可能是一個Hibernate連接池嗎?奇怪的是,所有的連接都在等待。
我很感謝所有的想法和提示!
編輯 - Hibernate配置(使用Spring)
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://************:3306/********</value>
</property>
<property name="username">
<value>********</value>
</property>
<property name="password">
<value>********</value>
</property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="configLocation">
<value>WEB-INF/hibernate.hbm.xml</value>
</property>
<property name="configurationClass">
<value>org.hibernate.cfg.AnnotationConfiguration</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
<prop key="hibernate.jdbc.batch_size">0</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.bytecode.provider">cglib</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<property name="eventListeners">
<map>
<entry key="save-update" value-ref="saveUpdateEventListener" />
</map>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
SOLUTION:我現在結束了使用雄貓JNDI數據源和它最終的作品。只有11(!!)到DATABSE連接使用;)謝謝@Vineet雷諾
Hibernate沒有我能想到的連接池。你有沒有使用c3p0? – Pace 2011-06-17 13:33:58
有像c3p0這樣的開源連接池。如果不是這種情況,請檢查您明確獲取可能是連接泄漏源的連接的代碼塊。確保它們關閉。檢查您的數據源設置以更好地理解問題。如果是這種情況,通常會有一些配置參數幫助您捕獲連接泄漏。 – 2011-06-17 13:42:33