I am having a spring/hibernate/mysql deployed on my server. Since some days I am facing the problem that my application seems to open lots of connections to the database. I am taking this hint from a netstat output, which looks like this (IP Addresses obfuscated):
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 -
However, when looking on the MySQL Workbench Server Health Tab for my MySQL Database, it looks as everything would be fine (see screenshot attached).
Also my application has normal performance.
We are currently actively developing the application, but we cannot see any code changes that affect this behaviour. There must have been a change obviously, but it might be also a configuration issue, or whatever.
Could it be a Hibernate Connection Pool? The strange thing is that all the connections are waiting.
I am thankful for all ideas and hints!
Edit - Hibernate Configuration (using 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: I now ended up using Tomcats JNDI Datasource and it finally works. Only 11(!!) connections to the databse used ;) Thanks @Vineet Reynolds