c3p0数据源 ssh框架就,mysql数据库,每次项目刚部署后能够正常运行,但是过了一段时间就出现请求超时,初步怀疑是连接数过多所致,但是项目中的连接我都已经及时关闭了 ,不知道具体是什么原因
另附我的配置代码
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl"
value="jdbc:mysql://innketek.mysql.rds.aliyuncs.com:3306/waterdrop" />
<property name="user" value="waterdrop" />
<property name="password" value="waterdrop12345678" />
<property name="maxPoolSize" value="110" />
<property name="minPoolSize" value="1" />
<property name="initialPoolSize" value="1" />
<property name="maxIdleTime" value="30" />
<property name="breakAfterAcquireFailure" value="false" />
<property name="idleConnectionTestPeriod" value="60" />
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:hibernate.cfg.xml" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">com.altigen.webapp.common.MyDialect</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</prop>
</props>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
程序中为了调用存储过程所以获得连接的方法如下
Connection cn = getHibernateTemplate().getSessionFactory().openSession()
.connection();
控制台主要报错为
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Too many connections
我观察了mysql 数据库中的Threads_connected 几乎一直增加,但也有下降的时候,但是下降不明显,基本剩个一分钟左右才会减少几个链接,不知道具体是什么原因 ,mysql设置的允许最大连接数也是110,请各位高手帮助分析下到底是什么原因?
------解决思路----------------------
Connection cn 需要显示关闭
------解决思路----------------------
既然都已经确定是连接数超过上限,一般注入的没啥问题,那就好好查查手动的代码
------解决思路----------------------
试试这个
------解决思路----------------------
这个
------解决思路----------------------
写个监控页面,监控当前各种状态。
------解决思路----------------------
会不会是数据库连接池发生了连接泄露,导致了可用连接为0,注意使用完连接后要关闭掉连接