600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > mysql连接池失效_连接池隔天失效之异常处理

mysql连接池失效_连接池隔天失效之异常处理

时间:2021-09-09 01:40:47

相关推荐

mysql连接池失效_连接池隔天失效之异常处理

一、 开发环境

 测试平台:Linux

 开发工具:Eclipse 3.x

 搭配环境:Struts2.x / Ibatis 2.0 / MySql / Tomcat6.0

二、 异常描述

 提示信息:

Caused by: com.municationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

.SocketException

MESSAGE: Broken pipe

STACKTRACE:

.SocketException: Broken pipe

 描述说明:

在使用UNSAP-WEBMAIL系统时,对邮箱进行增删改查操作,在一定时间内都可正常工作,但隔天再登陆WEBMAIL系统后,发现进行一些数据库操作时,连接失效,不能正常修改保存,抛出上面的异常。

三、 异常诊断

 分析:

经查找分析,在使用MySQL的Java连接池的过程中,连接一晚上不释放,第二天就会造成超时的错误,其原因是因为MySQL默认的空闲等待时间是8个小时,一旦空闲超过8个小时,就会强制行关闭该连接,而连接池中却依然保有该连接的有效引用,有数据访问时,使用一个经被MySQL强制关闭的连接就会抛出上面异常。

 诊断:

鉴于连接失接的问题,究其原因是因为连接超时或是空连接引起的异常,解决办法一、可以加长设置其等待的时间;办法二、优化连接池设置

四、 异常处理

 设置等时间:

在MySQL服务器的配置文件f中,默认方式下,其空闲等待时间是28800秒,即8个小时,当超过这个时段,则连接断开,加长设置其等时间,只需在配置文件f中的[mysqld]块中,加入如下两行

wait_timeout = 2880000

//空闲等时间的秒数

interactive_timeout = 2880000

//服务器关闭交互式连接前等待活动的秒数

 优化连接池:

 环境一:IBATIS2.0 ,数据库连接池TYPE=“SIMPLE”

1. 第一行,是否允许检测连接状态,设置其值为TRUE。

2. 第二行,数据库连接状态检测语句,越简单越好。

3. 第三行,对持续连接时间超过设定值(毫秒)的连接进行检测,0为不检测,减少系统消耗。

4. 第四行,对空闲超过设定值(毫秒)的连接进行检测,这里设为一个小时。

 环境二:IBATIS2.0 / SPRING 2.5,数据库连接池TYPE=“DBCP”

select 1 from dual

true

1. 第一行,数据库连接状态检测语句。

2. 第二行,是否允许检测连接状态,设为TURE

五、 附加

1) MySQL配置文件相关:

1、配置文件位置:Windows下在%MySQL HOME%/bin下有mysql.ini配置文件,Linux系统下的配置文件为/etc/f。

2、配置文件设置:wait_timeout的取值范围是 1-2147483(Windows),1-31536000(linux),interactive_time取值随wait_timeout变动,它们的默认值都是28800。

2) 连接池设置:

连接设优化设置中,IBATIS版本不同,所设置的参数名称也不相同,所以不可拿上面的设置通用于所有IBATIS版本。

分享到:

-05-26 09:23

浏览 2507

分类:数据库

评论

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。