应用程序和数据库建立连接,如果超过8小时应用程序不去访问数据库,数据库就断掉连接 。这时再次访问就会抛出异常,如下所示:

java.io.EOFException

at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1913)

at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2304)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)

...

查了一下发现应用程序和mysql数据库建立连接,如果超过8小时应用程序不去访问数据库,数据库就断掉连接 。这时再次访问就会抛出异常。

关于mysql自动断开的问题研究结果如下,在mysql中有相关参数设定,当数据库连接空闲一定时间后,服务器就会断开等待超时的连接:

1、相关参数,红色部分

mysql> show variables like '%timeout%';

+--------------------------+-------+

| Variable_name            | Value |

+--------------------------+-------+

| connect_timeout          | 5     |

| delayed_insert_timeout   | 300   |

| innodb_lock_wait_timeout | 50    |

| interactive_timeout      | 28800 |

| net_read_timeout         | 30    |

| net_write_timeout        | 60    |

| slave_net_timeout        | 3600 |

| wait_timeout             | 28800 |

+--------------------------+-------+

同一时间,这两个参数只有一个起作用。到底是哪个参数起作用,和用户连接时指定的连接参数相关,缺省情况下是使用wait_timeout。我建议是将这两个参数都修改,以免引起不必要的麻烦。

2、修改参数

这两个参数的默认值是8小时(60*60*8=28800)。我测试过将这两个参数改为0,结果出人意料,系统自动将这个值设置为1。换句话说,不能将该值设置为永久。

将这2个参数设置为24小时(60*60*24=604800)即可。

set interactive_timeout=604800;

set wait_timeout=604800;

也可以修改my.cof,修改后重起mysql

打开/etc/my.cnf,在属性组mysqld下面添加参数如下:

[mysqld]

interactive_timeout=28800000

wait_timeout=28800000

如果一段时间内没有数据库访问则mysql自身将切断连接,之后访问java访问连接池时对数据库的数据通道早就关闭了,因为dbcp连接池无法时时维护与数据库的连接关系,mysql5以后即使在dbcp配置中加入autoReconnect=true也没有效果。

其实愚蠢的版本就是直接加大这两个值

正确的解决方法是使用开源的proxool来取代tomcat的dbcp连接池

2、解压缩proxool-0.9.0RC3.zip,拷贝lib下的所有jar库文件到你的工程下的WEB-INF/lib下,同时记得也把Mysql的jdbc驱动到web-info/lib

3、在WEB-INF下(别跑错地方)建立文件:proxool.xml

proxool.xml这个文件是用来设置别名的。

其中标签就是别名的设置段。

alias是别名;

driver-url是驱动的url,就是连接的url;

driver-class是驱动的类,就是数据库驱动;

driver-properties是驱动的属性,可以设置登陆数据库的用户名和密码。maximum-connection-count是最大连接数;

house-keeping-sleep-time是proxool自动侦察各个连接状态的时间间隔(毫秒)属性,侦察到空闲的连接就马上回收,超时的销毁;

house-keeping-test-sql是proxool自动侦察各个连接状态是用的sql。

文件内容如下:

crm

jdbc:mysql://127.0.0.1:3306/crm?useUnicode=true&autoReconnect=true&characterEncoding=GBK

com.mysql.jdbc.Driver

25

5

60000

select 1

4、在WEB-INF/web.xml中节点里加入如下内容:

proxoolServletConfigurator

org.logicalcobwebs.proxool.configuration.ServletConfigurator

xmlFile

WEB-INF/proxool.xml

1

Admin

org.logicalcobwebs.proxool.admin.servlet.AdminServlet

Admin

/admin

5、在需要连接数据库时,只需要写:

Connection conn = DriverManager.getConnection("proxool.DBPool");

mysql连接超过8小时错误_mysql超过8小时数据库断掉连接的简单解决办法相关推荐

  1. mysql 安装启动服务器一直失败_mysql安装后服务器启动失败的几种解决办法

    刷刷存在感- 今天在服务器上试着安装了一下mysql,顿时又开始踩以前踩过的坑...老坑新坑各种踩... 废话不多说,整理思路进入正题,出现上述问题我琢磨着大概有以下几种解决办法: MySQL版本:m ...

  2. 解决uniapp小程序打包体积超过2M,提示包体积超过2M,“main packagexxx”,不给上传和预览的解决办法,绝对有效

    解决办法,原文地址: 解决uniapp小程序打包体积超过2M,提示包体积超过2M,"main packagexxx",不给上传和预览的解决办法,绝对有效!在微信小程序开发中,为了解 ...

  3. 【2020可用】Python使用 imaplib imapclient连接网易邮箱提示 Unsafe Login. Please contact kefu@188.com for help 的解决办法

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:http://blog.csdn.net/jony_online/article/d ...

  4. linux下生成guid,在Linux下生成GUID的程序,及编译错误 “uuid/uuid.h: No such file or directory” 的解决办法。...

    在Linux下编写生成GUID的程序,如下 guid.c 文件: #include #include void uuid2string(const uuid_t uu, char* const str ...

  5. 错误 -source 1.6 中不支持 diamond 运算符的解决办法(已解决)

    错误: -source 1.6 中不支持 diamond 运算符的解决办法 第一步:打开setting-> Build.Execution.Deployment 第二步:打开项目结构 开项目结构

  6. mysql数据中包含不间断空格(ascii值为194和160)解决办法

    mysql数据中包含不间断空格(ascii值为194和160)解决办法 问题 mysql数据存在这个不间断空格,导致前端显示乱码. 起因 字符串中的一个空格(ASCII:32)被UTF-8编码之后变成 ...

  7. “已连接,但无法访问互联网”开机后wifi有感叹号, 时间无法同步解决办法

    "已连接,但无法访问互联网"开机后wifi有感叹号, 时间无法同步解决办法 在手机的shell里以root用户执行: # settings put global captive_p ...

  8. navicat for mysql执行sql语句报错: [Err] 1146 - Table ‘performance_schema.session_status‘doesn‘t exist 解决办法

    navicat for mysql执行sql语句报错: [Err] 1146 - Table 'performance_schema.session_status' doesn't exist 解决办 ...

  9. mysql服务启动报错:“服务读取描述失败,错误代码:2”的解决办法?

    mysql服务启动报错:"服务读取描述失败,错误代码:2"的解决办法? 这个问题是mysql的服务被损坏了,需要重建服务,不需要重新安装mysql,方法步骤如下 第1步:删除已有的 ...

最新文章

  1. 数据:哈佛大学新生近五成是富二代!
  2. 互联网日报 | 网易回港二次上市首日涨5.69%;特斯拉成全球市值最高车企;大兴机场开通首条货运航线...
  3. apt get php mysql_Ubuntu10用apt-get配置apache+php+mysql(轉)
  4. 西部数据暂停与华为的合作关系及发货
  5. ADF文件数据结构解析和ADF文件读写
  6. c# winform 显示动态gif图片的简单方法
  7. 微信表情包储服务器,微信表情包不用收藏,只需打开这个设置,再也不担心斗图了...
  8. cf两边黑屏怎么解决win10_红警49期:win10玩红警2黑屏但有声音怎么办
  9. 字符串模板中怎么写html标签,ES6模板字符串和标签模板的应用实例分析
  10. 【Windows系统】产品ID、设备ID等系统参数
  11. 娱乐,舰娘r建造公式【转】
  12. 项目前期准备的重要性
  13. SOCKET与TCP
  14. 干货 | 查资料利器:线上图书馆
  15. 全局唯一ID发号器的几个思路
  16. 【Python百炼成魔】魂圣初入Python之Python最佳入门实践
  17. 如何使用WordPress事件日历插件
  18. AirPods站起来,千万个Hi-Fi倒下去
  19. CAD梦想看图6.0安卓版 20181022更新
  20. 计算机配置认识,硬件配置 认识计算机硬件组成

热门文章

  1. etcd使用之ttl不准确问题
  2. epoll使用详解(精髓)
  3. linux 的重定向、管道、xargs 命令
  4. proto 指定字段json名_比json快5倍的protobuf了解一下
  5. Matlab常用函数流水账
  6. nor flash 基础篇
  7. 阿里巴巴开源OpenJDK长期支持版本,Java全球管理组织唯一中国企业
  8. 80386的各种寄存器一览
  9. Exchange2013DAG配置-零错误
  10. 3-unit1 IPv6网络的管理