AD

Mysql"8小时问题"

假设你的数据库是mysql,如果数据源配置不当,将可能发生经典的“8小时问题”。原因是mysql在默认情况下,如果发现一个连接的空闲时间超过8小时,将会在数据库端自动关闭这个连接。而数据源并不知道这个连接已经关闭了,当它将这个无用的连接返回给某个dao时,dao就会报无法获取connection异常。

如果采用dbcp的默认配置,由于testOnBorrow属性的默认值是true,数据源在将连接交给dao前,会事先检测这个连接是否是好的,如果连接有问题(在数据库端被关闭),则会取一个其他的连接给dao。所以并不会有“8小时问题”。如果每次将连接交给dao时都检测连接的有效性,在高并发的应用中将会带来性能的问题,因为它会需要更多的数据库访问请求。

一种推荐的高效的方式是:将testOnBorrow设置为false,而将“testWhileIdle”设置为true,再设置好testBetweenEvictionRunsMillis值(小于8小时)。那些被mysql关闭的连接就可以别清除出去,避免“8小时问题”。

当然,mysql本身也能调整interactive-timeout(以秒为单位)配置参数,更改空闲连接的过期时间。所以,在设置timeBetweenEvictionRunsmMillis值时,必须首先获知mysql的空闲连接的最大过期时间。

c3p0对于有效连接的检测,请参照dbcp配置方式。

标签:
分类: 日常记录
时间: 2015-04-24

相关文章

  1. mysql 8小时空闲后连接超时的问题

    近一段时间,部门同事反映在使用mysql的过程出现数据库连接问题 应用程序和数据库建立连接,如果超过8小时应用程序不去访问数据库,数据库就断掉连接 .这时再次访问就会抛出异常,如下所示: java.io.EOFExcep ...
  2. mysql 8小时问题的解决方法

    Use Hibernate + MYSQL database development, link timeout problem: com.mysql.jdbc.CommunicationsException: The ...
  3. C3P0 配置

    官方文档 : http://www.mchange.com/projects/c3p0/index.html 3 30 1000 false Test false 100 null false 60 3 60 15 10 ...
  4. c3p0详细配置

    c3p0详细配置 官方文档 : http://www.mchange.com/projects/c3p0/index.html <c3p0-config> <default-config> < ...
  5. spring mvc+spring3.05+mybatis3.1.1环境搭建____maven管理

    =====================pom.xml=================================================== <project xmlns="http:/ ...
  6. Mysql经典的"8小时问题"

    MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而 c3p0 连接池则以为该被断开的连接依然有效. 假设你的数据库是mysql,如果数据源配置不当,将可能发生经典的"8小 ...
  7. mysql连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案

    MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而 c3p0 连接池则以为该被断开的连接依然有效.在这种情况下,如果客户端代码向 c3p0 连接池请求连接的话,连接池就会把已经失效 ...
  8. MySQL+Hibernate下连接空闲8小时自动断开问题解决

    本文为转载学习 转载文章1:http://hi.baidu.com/boyyf/item/fe4dcc1329297349e75e06ce 前段时间刚完成一个家教网项目,数据库为MySQL5.0,持久层使用Hiberna ...
  9. PHP+MySQL网站服务器管理软件 LuManager

    LuManager 网站 : http://www.zijidelu.org/forum.php LuManager(LUM)是基于FreeBSD.Debian.Centos.Ubuntu.HttpOS等Linux/Un ...
  10. mysql存储过程详解

    我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果 ...
  11. Linux 每天自动备份mysql数据库的方法

    linux下为了安全有时候需要自动备份mysql数据库,下面是具体的实现步骤. /usr/bin为mysql安装目录 建备份文件夹: mkdir mysql_data_bak 建脚本文件: touch autobacku ...
  12. mysql中的保留字段产生的问题

    我们在使用mysql的时候要注意这方面的问题,一个因为数据库字段命名不当造成的问题检查起来还是相当麻烦的,今天遇到这种问题,花费了很长时间才找到问题所在,这是无语 You have an error in your SQ ...
  13. 关于mysql数据库格式化简单介绍

    本文将介绍关于mysql数据库格式化时需要注意的一些问题,需要的朋友可以参考下 DATE_FORMA T(date, format) 根据格式串format 格式化日期或日期和时间值date,返回结果串. 可用DATE_ ...
  14. MySQL函数讲解(MySQL函数大全)

    MySQL函数大全和函数讲解,管理MYSQL数据一定会用到 对于针对字符串位置的操作,第一个位置被标记为1. ASCII(str) 返回字符串str的最左面字符的ASCII代码值.如果str是空字符串,返回0.如果str ...
  15. 解读mysql主从配置及其原理分析(Master-Slave)

    在windows下配置的,后面会在Linux下配置进行测试,需要配置mysql数据库同步的朋友可以参考下. 1.在主数据库服务器为从服务器添加一个拥有权限访问主库的用户: GRANT REPLICATION SLAVE ...
  16. MySql的存储过程学习小结 附pdf文档下载

    这篇文章主要是介绍mysql存储过程的创建,删除,调用及其他常用命令 存储过程是一种存储在数据库库中的程序(就像正规语言里的子程序一样),准确的来说,MySql支持的"routine(例程)"有两种: ...
  17. 开源MySQL高效数据仓库解决方案:Infobright详细介绍

    这篇文章主要介绍了开源MySQL高效数据仓库解决方案:Infobright详细介绍,本文讲解了Infobright特征.Infobright的价值.Infobright的适用场景.与MySQL对比等内容,需要的朋友可以参 ...
  18. PHP 和 MySQL 基础教程(三)

    用 cookies 来跟踪识别用户 让我们来看看保存在浏览器中的内容.如果你用的是 IE5 ,在 windows 目录下有一个 cookies 的目录,里面有很多文本文件,文件名都是类似于 [email protected] ...
  19. MySQL的Data_ADD函数与日期格式化函数说明

    今天看到了MySQL的日期函数,里面很多有用的,这里只把两个参数不太好记的粘下来了. DATE_ADD(date,INTERVAL expr type) DATE_SUB(date,INTERVAL expr type) ...