3p0衔接mysql常常断开衔接解决方案ITeye - 凯时娱乐

3p0衔接mysql常常断开衔接解决方案ITeye

2019-01-11 19:23:28 | 作者: 寄风 | 标签: 衔接,问题,经过 | 浏览: 2673

2009-06-05 17:47最近项目用到了hibernate3.0 c3po mysql的数据层组合,开发布置十分顺畅,但每天早上拜访使用都抛出 Could not open Hibernate session for transaction 反常,Caused by: com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception,但经过几回拜访后又康复正常,datasource装备如下: bean id="dataSource" destroy-method="close" property name="driverClass" value com.mysql.jdbc.Driver /value /property property name="jdbcUrl" value ![CDATA[jdbc:mysql://localhost:3306/WAP2?useUnicode=true amp;characterEncoding=latin1] /value /property property name="user" value root /value /property property name="password" value zznode /value /property property name="minPoolSize" value 3 /value /property property name="maxPoolSize" value 20 /value /property property name="maxStatements" value 50 /value /property property name="maxIdleTime" value 6000000 /value /property /bean 依据问题现象开始认为是数据库衔接呈现问题,逐用反常作为关键词google;得到了相关信息:1、mysql 数据库链接默许的超时时长为28800秒,2、c3p0 的几个参数意思; 经过以上信息的搜集隐约知道了问题所在(mysql经过28800秒也便是8个小时后关掉闲暇链接,而c3p0是经过6000000妙才断开链接,就有可 能呈现c3po坚持的衔接有或许现已被mysql关掉了,天然就呈现了hibernate不能翻开session,而且都是第二天一早就犯错);为了验证 我的主意,决定在开发机上重现这个过错;首先在mysql装备文件my.ini 加上 wait_timeout=30 让mysql经过30妙就关掉链接,重启使用,第一次拜访成功,等候一分钟后拜访公然呈现相同的过错,阐明问题确诊正确,着手修正装备如下: property name="maxIdleTime" value 28000 /value /property property name="idleConnectionTestPeriod" value 28000 /value /property 装备解说:28000 28800 使c3p0 在mysql关不衔接之前封闭自己持有的链接,装备idleConnectionTestPeriod 参数使c3po每隔28000查看已有的衔接是否可用,这样应该保证拿到的衔接都是可用的,假如还不定心能够加 上 testConnectionOnCheckout参数每逢拿出衔接的时分就查看一下是否能够,这个或许会使mysql有必定的功能献身; property name="testConnectionOnCheckout" value true /value /property 经过以上修正检测一段时间没有呈现相同问题,问题处理!总结处理问题的三个过程:搜集相关信息、重现问题、处理测验

 

 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯时娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章