让你的DBCP连接池连接不超时
来源:互联网 发布:iphone酷狗网络异常 编辑:程序博客网 时间:2024/04/29 16:52
项目使用DBCP连接池,登录系统后,一段时间没有操作,再点击其他页面就报错,the last packet send to mysql was ** ago。
度娘一下,知道是数据库连接超时,怎么解决呢?
首先想到的是MySQL数据库配置文件,mysql命令行执行,
show global variables like ‘wait_timeout’;
MySQL默认连接存活时长为28800秒,即8小时。如果在wait_timeout期间内,数据库连接(java.sql.Connection)一直处于等待状态,MySQL就将该连接关闭。此时,DBCP数据库连接池仍然合法地持有该连接,当用该连接来进行数据库操作时,就报上述错误。
解决方法一,设置一个较大的wait_timeout值。
wait_timeout的最大值分别是24天/365天(windows/linux,可通过修改my.ini或my.cnf,将wait_timeout配置一个较大值,这样可暂时解决这个问题。但如果连接等待超过配置时长,还是会有这个问题,这个办法不能根本上解决问题。
解决方法二,在应用的数据库连接配置上想办法,url增加autoReconnect\=true,可惜对mysql5以上版本无效,这个办法也不能根本解决问题。
解决办法三,在连接池配置文件上下功夫。
BasicDataSource有testOnBorrow、testOnReturn、testWhileIdle属性,意义分别是取得、返回对象和空闲时,是否进行对象有效性检查,默认都是False关闭状态。只要都设置为True,并提供validationQuery语句即可保证数据库连接始终有效。
testOnBorrow=truetestOnReturn=truetestWhileIdle=truevalidationQuery=SELECT 1 FROM DUAL
问题解决,数据库连接超时错误再未出现。
- 让你的DBCP连接池连接不超时
- DBCP 连接池的理解
- DBCP连接池的配置
- DBCP连接池的使用
- 连接池DBCP的使用
- 数据库超时空闲失效-dbcp连接池参数优化
- 数据库超时空闲失效-dbcp连接池参数优化
- DBCP连接池防止mysql 8小时超时
- DBCP连接池连接数据库
- dbcp连接池实现
- DBCP连接池使用
- DBCP连接池详解
- DBCP连接池
- DBCP 连接池参数
- 使用dbcp 连接池
- DBCP 连接池
- Spring DBCP 连接池
- DBCP连接池配置
- 图像矩阵——灰度与彩色图
- leetcode-501-Find Mode in Binary Search Tree
- 关于mac系统外接键盘的设置
- 2017.02.15总结
- ContentProvider的工作过程
- 让你的DBCP连接池连接不超时
- PAT-A 1009. Product of Polynomials (25)
- 串口2
- 微信高并发资金交易系统设计方案——百亿红包背后的技术支撑
- Netty4学习笔记(1)-- ChannelPipeline
- 常用AMF解析
- Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1
- 今天入门啦
- Asp.net mvc 知多少(六)