一、    开发环境

    测试平台:Linux

    开发工具:Eclipse 3.x

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

二、    异常描述

    提示信息:

Caused by: com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException

MESSAGE: Broken pipe

STACKTRACE:

java.net.SocketException: Broken pipe

    描述说明:

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

三、    异常诊断

    分析:

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

    诊断:

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

四、    异常处理

    设置等时间:

在MySQL服务器的配置文件my.cnf中,默认方式下,其空闲等待时间是28800秒,即8个小时,当超过这个时段,则连接断开,加长设置其等时间,只需在配置文件my.cnf中的[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/my.cnf。

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

2)    连接池设置:

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

分享到:

2010-05-26 09:23

浏览 2507

分类:数据库

评论

mysql连接池失效_连接池隔天失效之异常处理相关推荐

  1. mysql连接池设计_数据库连接池(基于MySQL数据库)

    使用JDBC是怎么保证数据库客户端和数据库服务端进行连接的? 通过代码: conn=DriverManager.getConnection(url, username, password); JDBC ...

  2. c3p0 mysql 连接池配置文件_数据库连接池c3p0的使用

    原标题:数据库连接池c3p0的使用 来源:java联盟 https://mp.weixin.qq.com/s/5Tbkf8dVFfH8AvtqWl-7Xg 程序员共读整理发布,转载请联系作者获得授权 ...

  3. oracle mysql连接池配置文件_数据库连接池两种配置方式详解

    数据库连接池: 负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个:释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接 ...

  4. hikaricp 连接池分析_数据库连接池终于搞对了,这次直接从100ms优化到3ms!

    我在研究HikariCP(一个数据库连接池)时无意间在HikariCP的Github wiki上看到了一篇文章(即前面给出的链接),这篇文章有力地消除了我一直以来的疑虑,看完之后感觉神清气爽.故在此做 ...

  5. mysql通过集合查询_连接查询与集合查询

    4.外连接查询 在前面讲述的连接操作中,返回的结果都是满足连接条件的记录.有些时候,开发人员或者用户对于不满足连接条件的部分记录也感兴趣,这个时候就需要使用外连接查询.外连接查询不仅可以返回满足连接条 ...

  6. 高并发内存池设计_内存池

    高并发内存池设计 1. 常用的内存操作函数 2. 高性能内存池设计_弊端解决之道 弊端一 弊端二 弊端三 弊端四 3. 弊端解决之道 内存管理维度分析 内存管理组件选型 4. 高并发内存管理最佳实践 ...

  7. threadpooltaskexecutor线程池使用_线程池的理解及使用

    1.为什么要使用线程池 线程池由任务队列和工作线程组成,它可以重用线程来避免线程创建的开销,在任务过多时通过排队避免创建过多线程来减少系统资源消耗和竞争,确保任务有序完成: 线程池的好处: 1,因为线 ...

  8. mysql 分区索引失效_数据库分区表全局索引失效故障

    现场实施反馈一个分区表的几个全局索引老是失效. 通过视图v$sql, v$sqlarea等视图查看,对这张分区表执行过的操作有drop partition和truncate partition操作,但 ...

  9. 判断 失效_如何判断专利权终止和失效,他们是一回事吗?有什么区别?

    对于很多对于专利不了解的人来说,他们认为这两种情况可能是一样的,但实际情况却不是的,专利作为知识产权的一部分,无疑不是各大企业争着抢着要做的事情,专利实行先申请原则,对于自己的专利要及时申请,才能得到 ...

最新文章

  1. ASP.NET实现身份模拟
  2. hdoj3351-stack
  3. 高级程序员和低级程序员的区别
  4. [LeetCode] Search for a Range [34]
  5. 先导课程 单片机_单片机技术(北京航空航天大学)-壹课堂 - 公开课 | 精品课程 | 教学视频...
  6. InfluxDb系列:几个关键概念(主要是和关系数据库做对比)
  7. c++语言定义排序函数,关于C++中定义比较函数的三种方法小结
  8. Visual Studio 中 Tab 转换为空格的设置
  9. Python某地区二手房房价数据分析
  10. azw3转换为pdf_PDF怎么转换为PPT?PDF秒转PPT秘技!
  11. 星广互动推出全球首个智能AR广告平台 重塑UGC视频广告价值
  12. ubuntu 14.04安装flash播放器
  13. UI设计--蓝湖切图
  14. Tony.SerialPorts.RS232串口模块(三)
  15. MATLAB图像数字水印的方案
  16. 数据科学与大数据技术专业毕业设计选题
  17. 2022群发邮件软件有哪些?哪个好用呢?解读如何大量群发邮件及单显功能
  18. 游戏设计自学记录(27)
  19. UVA1149 装箱 Bin Packing 题解
  20. 家用自建服务器集群,什么是服务器集群,怎样搭建集群服务器?

热门文章

  1. 「跨域」利用node.js实践前端各种跨域方式(上)
  2. python pip 自动补全
  3. 用ssh建立机器之间的信任机制
  4. 创业者周鸿祎前传(西安交大时期)
  5. Exchange 2007 配置POP3
  6. java bytebuffer 大小,bytebuffer 获取长度
  7. 调用父级方法_通信:找到任意组件实例的findComponents系列方法,5个终极方案
  8. android tag 快捷_Android Studio快捷键生成TAG、Log.x日志输出介绍
  9. linux命令在哪里使用,在Linux不同场景中Linux命令的使用方法
  10. win10网络邻居看到linux,在Deepin 20系统中网络共享Windows无法访问的另类解决方法...