mysql:超过8小时后连接池异常和解决方法
来源:互联网 发布:起点数据查询 编辑:程序博客网 时间:2024/04/29 04:53
MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而 c3p0连接池则以为该被断开的连接依然有效。在这种情况下,如果客户端代码向 c3p0连接池请求连接的话,连接池就会把已经失效的连接返回给客户端,客户端在使用该失效连接的时候即抛出异常。
解决这个问题的办法有三种:
1. 增加 MySQL 的 wait_timeout 属性的值。
修改/etc/mysql/my.cnf 文件,在[mysqld] 节中设置:
#Set a connection to wait 8 hours in idle status.
wait_timeout = 86400 2. 减少连接池内连接的生存周期,使之小于上一项中所设置的 wait_timeout 的值。
修改 c3p0 的配置文件,设置:
#How long to keep unused connections around(in seconds)
# Note: MySQL times out idle connectionsafter 8 hours( 28 , 800 seconds)
# so ensure this value is below MySQL idletimeout
cpool.maxIdleTime = 25200 在 Spring 的配置文件中:
< bean id ="dataSource"
class ="com.mchange.v2.c3p0.ComboPooledDataSource" >
< property name ="maxIdleTime" value ="${cpool.maxIdleTime}" />
<!-- otherproperties -->
</ bean > 3. 定期使用连接池内的连接,使得它们不会因为闲置超时而被 MySQL 断开。
修改 c3p0 的配置文件,设置:
修改 Spring 的配置文件:
附:以下 awk 脚本可以用以将 c3p0.properties 文件中的属性设置转换成为applicationContext.xml 中 数据库连接池 DataSource 所需的 XML 元素形式。
# ! / bin / awk
BEGIN {
FS = " = " ;
}
{
if ( NF == 2 ) {
if (( x = index ($ 1 , " . " )) > 0 ) {
property_name = substr ($ 1 , x + 1 , length ($ 1 ));
} else {
property_name = $ 1 ;
}
printf ( " <property name="%s"value="${%s}"/> " , property_name , $ 1 );
}
}
解决这个问题的办法有三种:
1. 增加 MySQL 的 wait_timeout 属性的值。
修改
修改 c3p0 的配置文件,设置:
修改 c3p0 的配置文件,设置:
# Prevent MySQL raise exception after a long idle timecpool.preferredTestQuery='SELECT 1'cpool.idleConnectionTestPeriod=18000cpool.testConnectionOnCheckout =true
<bean id="dataSource"="com.mchange.v2.c3p0.ComboPooledDataSource"> class <property name="preferredTestQuery" ="${cpool.preferredTestQuery}" /> value <property name="idleConnectionTestPeriod " ="${cpool.idleConnectionTestPeriod value }" /><property name="testConnectionOnCheckout " ="${cpool.testConnectionOnCheckout value }" /><!-- other properties --></bean>
附:以下 awk 脚本可以用以将 c3p0.properties 文件中的属性设置转换成为applicationContext.xml 中 数据库连接池 DataSource 所需的 XML 元素形式。
对MySQL server hasgone away错误最常见的原因是服务器超时了并且关闭了连接。缺省地,如果没有事情发生,服务器在8个小时后关闭连接。可在启动mysqld时通过设置wait_timeout变量改变时间限制。
- mysql:超过8小时后连接池异常和解决方法
- C3P0连接池配置解决MySQL连接的空闲时间超过8小时后自动断开连接的问题
- mysql 8小时连接池异常
- MySQL+Hibernate连接空闲超过8小时后自动断开解决方案
- MySQL+Hibernate连接空闲超过8小时后自动断开解决方案
- 对于连接池解析 MySql超过8小时连接报错的解决方案
- 对于mysql连接池8小时后自动待机问题
- MySQL 连接池8小时空闲后超时问题解决
- 解决Mysql连接池被关闭 ,hibernate尝试连接不能连接的问题。 (默认mysql连接池可以访问的时间为8小时,如果超过8小时没有连接,mysql会自动关闭连接池。
- C3P0 数据库连接池 详细配置 解决mysql连接8小时之后连接异常的问题
- 使用DBCP连接池时出现MySql 8小时断开连接的解决方法
- mysql数据库连接空闲超过8小时自动断开,导致网站无法连接
- mysql数据库连接空闲超过8小时自动断开,项目无法连接数据库
- mysql 8小时空闲后连接超时的问题
- 解决mysql 8小时空闲后连接超时的问题
- 解析:mysql 8小时空闲后连接超时的问题
- 解决mysql 8小时 空闲后连接断开
- mysql 8小时空闲后连接超时的问题
- java基础部分-《第二部分》-线程部…
- java基础部分-《第二部分》-线程部…
- java基础部分-《第二部分》-异常机…
- 数据库优化
- java工作、面试等细说
- mysql:超过8小时后连接池异常和解决方法
- c3p0_百度百科
- 线性规划与网络流24题——04魔术球问题
- JS限制上传文件类型和大小(不是宽…
- PHP分页技术通用模版
- 通讯录管理系统
- 绿色网络投票平台
- 何为B2B、B2C、C2C、C2B?
- 何为SNS?