tomcat数据库连接池问题

在mysql的设置中有两个选项,主动断开空闲连接的等待时间。

wait_timeout

Thenumberofsecondstheserverwaitsforactivityonanoninteractiveconnectionbeforeclosingit.ThistimeoutappliesonlytoTCP/IPandUnixsocketfileconnections,nottoconnectionsmadevianamedpipes,orsharedmemory.

interactive_timeout

Thenumberofsecondstheserverwaitsforactivityonaninteractiveconnectionbeforeclosingit.AninteractiveclientisdefinedasaclientthatusestheCLIENT_INTERACTIVEoptiontomysql_real_connect().Seealsowait_timeout.

这样就会存在一个问题,如果你的数据库连接池没有设置判断连接是否有效,那么当程序获取连接池中的一个已经被mysql主动关闭的连接时会有抛出异常。

下面给出几个设置示例:

hibernate中的设置

<property name="hibernate.c3p0.acquire_increment">3</property> 
    <property name="hibernate.c3p0.idle_test_period">5</property> 
    <property name="hibernate.c3p0.timeout">10000</property> 
    <property name="hibernate.c3p0.max_size">80</property> 
    <property name="hibernate.c3p0.min_size">15</property> 
    <property name="hibernate.c3p0.max_statements">0</property>
    <property name="hibernate.c3p0.preferredTestQuery">select 1;</property>

tomcat中设置数据源

testOnBorrow="true" testOnReturn="true" testWhileIdle="true" validationQuery="select 1"

相关推荐