在mysql的设置中有两个选项,主动断开空闲连接的等待时间。
wait_timeout
The number of seconds the server waits for activity on a noninteractive connection before closing it. This timeout applies only to TCP/IP and Unix socket file connections, not to connections made via named pipes, or shared memory.
interactive_timeout
The number of seconds the server waits for activity on an interactive connection before closing it. An interactive client is defined as a client that uses the CLIENT_INTERACTIVE option to mysql_real_connect(). See also wait_timeout.
这样就会存在一个问题,如果你的数据库连接池没有设置判断连接是否有效,那么当程序获取连接池中的一个已经被mysql主动关闭的连接时会有抛出异常。
下面给出几个设置示例:
hibernate中的设置
tomcat中设置数据源
wait_timeout
The number of seconds the server waits for activity on a noninteractive connection before closing it. This timeout applies only to TCP/IP and Unix socket file connections, not to connections made via named pipes, or shared memory.
interactive_timeout
The number of seconds the server waits for activity on an interactive connection before closing it. An interactive client is defined as a client that uses the CLIENT_INTERACTIVE option to mysql_real_connect(). See also wait_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"
本文深入探讨了MySQL中wait_timeout和interactive_timeout的设置对数据库连接管理的影响,强调了合理配置的重要性以避免连接池问题,并通过具体示例展示了在不同框架如Hibernate和Tomcat中进行配置的方法。
188

被折叠的 条评论
为什么被折叠?



