MySQL的八小时问题
来源:互联网 发布:阿里云服务器宕机 编辑:程序博客网 时间:2024/05/15 17:44
当你对MySQL访问时间间隔超过八小时,那么你下次对数据库进行操作的时候,可能就能遇到这个问题:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Connection.close() has already been called. Invalid operation in this state. at sun.reflect.NativeConstructorAccessorImpl.newInstance0( Native Method) com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after statement closed. at sun.reflect.NativeConstructorAccessorImpl.newInstance0( Native Method)
原因
这是因为MySQL配置中有一个默认的参数“wait_timeout”。当客户端连接到MySQL数据库之后,如果客户不断开链接,也不做任何操作,那么MySQL会保留到“wait_timeout”(默认是8小时),如果超过八小时,那么MySQL自动优化,就断开了这个连接。
解决方案
那么怎么去解决呢?
第一种方式:修改MySQL配置
修改MySQL配置my.ini或者my.cnf,将wait_timeout的值设大一点,比如说28800000。
缺点:这个只是治标,MySQL最大能设21天,超过就不行了。
第二种方式:修改连接池配置
比如说修改c3p0的配置文件:
# How long to keep unused connections around(in seconds) # Note: MySQL times out idle connections after 8 hours( 28 , 800 seconds) # so ensure this value is below MySQL idle timeout cpool.maxIdleTime = 25200
把连接的生命周期设的比较小。
缺点:连接失效太快,性能损耗。
第三种方式:使用前进行测试
比如说c3p0的testConnectionOnCheckOut=true
缺点:每次用都要测试,性能非常差。
第四种方式:投机取巧
写一个函数每八小时,自己访问数据库一次。
缺点:每八小时都要访问自己,如果业务繁忙,那性能就很损耗。
0 0
- MySQL的八小时问题
- MySQL的典型八小时问题
- MySQL数据库连接池八小时失效问题
- mysql的八小时保护机制
- java读取系统时间写入mysql数据库时,滞后八小时问题的解决
- 解决c3p0 mysql八小时连接失效问题
- java读取系统时间写入mysql数据库时,滞后八小时问题的解决 - ghostgarlic的专栏 - CSDNBlog
- mysql的8小时重连问题
- Mysql经典的“8小时问题”
- mysql经典的8小时问题-wait_timeout
- Mysql 8小时问题
- mysql 8小时问题
- mysql 8小时问题
- 上班八小时的习惯
- mysql 自动时间戳和系统时间差八小时的解决
- mysql 自动时间戳和系统时间差八小时的解决
- mysql的8小时空闲,断开连接的问题
- mysql wait_timeout 8小时问题
- 如何实现幻灯片效果/图片轮播
- 记网易笔试
- 不写对暴力不删!!!
- TOMCAT原理详解及请求过程
- 基于ubuntu14.04搭建OpenWrt开发环境
- MySQL的八小时问题
- 设计模式简明教程
- coco2d-x 基础系列 (05) Actions基本操作
- PAT1027 打印沙漏
- js模拟拖拽
- struts2中 # % $ (井号,星号,百分号)的区别和用法
- 博客之旅
- rigidbody中Is Kinematic选中后不受force影响
- 线索二叉树