首页
技术知识库
Task工作计划
网站简介
DON框架
后台管理
文章分类
JAVA
框架知识
操作系统
容器相关
数据库层
优化技术
界面编程
网络编程
开发工具
GO语言
其他
读书随笔
观影随笔
每日随笔
APP
mysql 8 小时连接断开解决方案
所属分类
:[数据库层] |
创建时间
:2013-09-24 |
文章属性
:原创 |
文章来源
: |
作者
:windfly
<pre><p><strong>现象:</strong></p> <p> 项目中使用连接池与Mysql连接,在8小时后,偶而会有数据库异常抛出</p> <p><strong>原因:</strong></p> <p> mysql的连接后,如果没有数据传输,在默认的8小时后,会自动断开连接。使用了数据连接池时,连接池并不知道其中的连接已经无效,还会分配已经失 效的连接给服务,导致服务使用连接时发生异常。</p> <p><strong>解决:</strong></p> <p> 方案一:</p> <p> 使用glassfish容器,利用glassfish自带的连接池管理功能中的自动校验。glassfish中的效验有多种,可以自行 选择。个人比较喜欢使用custon-validation方式。使用方式:glassfish管理后台-><span style="font-family: arial, helvetica, clean, sans-serif; font-size: small;"><span style="line-height : 22px; white-space: nowrap;">Resources</span></span>-><span style="font-fami ly: arial, helvetica, clean, sans-serif; font-size: small;"><span style="line-he ight: 22px; white-space: nowrap;"><strong>J</strong></span></span>DBC-><span style="font-family: arial, helvetica, clean, sans-serif; font-size: small;"><spa n style="line-height: 22px; white-space: nowrap;">JDBC Connection Pools</span></ span>->自定义的连接池名->Advanced 找到Connection Validation并选中,Validation Method:选择c uston-validation,save确认完成。</p> <p> 方案二:</p> <p> 使用c3p0连接池,因为c3p0连接池有一个 testConnectionOnCheckout 属性,将该属性值设置 为ture则会每次从连接池中取出连接时验证连接的有效性,但这样会使连接的数据发送次数增加一倍。</p> <p> 方案三:</p> <p> 修改mysql的配置,将默认时间 增大,但该方法治标不治本</p> <p> </p></pre>
返回