WilliamLin 2010-04-28
在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"