关于hibernate 利用c3p0连接mysql 数据库
2017-12-24 18:32
656 查看
最近项目用到了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配置如下:com.mysql.jdbc.Driver root zznode 3 20 50 6000000
1、mysql 数据库链接默认的超时时长为28800秒,
2、c3p0 的几个参数意思; 通过以上信息的收集隐隐知道了问题所在(mysql经过28800秒也就是8个小时后关掉空闲链接,而c3p0是经过6000000妙才断开链接,就有可能出现c3po保持的连接有可能已经被mysql关掉了,自然就出现了hibernate不能打开session,并且都是第二天一早就出错);为了验证我的想法,决定在开发机上重现这个错误;首先在mysql配置文件my.ini 加上 wait_timeout=30 让mysql经过30妙就关掉链接,重启应用,第一次访问成功,等待一分钟后访问果然出现同样的错误,说明问题诊断正确,着手修改配置如下: 28000 28000 配置解释:28000<28800 使c3p0 在mysql关不连接之前关闭自己持有的链接,配置idleConnectionTestPeriod 参数使c3po每隔28000检查已有的连接是否可用,这样应该确保拿到的连接都是可用的,如果还不放心可以加上 testConnectionOnCheckout参数每当拿出连接的时候就检查一下是否可以,这个可能会使mysql有一定的性能牺牲; true 通过以上修改检测一段时间没有出现同样问题,问题解决!总结解决问题的三个步骤:收集相关信息、重现问题、解决测试。
1、mysql 数据库链接默认的超时时长为28800秒,
2、c3p0 的几个参数意思; 通过以上信息的收集隐隐知道了问题所在(mysql经过28800秒也就是8个小时后关掉空闲链接,而c3p0是经过6000000妙才断开链接,就有可能出现c3po保持的连接有可能已经被mysql关掉了,自然就出现了hibernate不能打开session,并且都是第二天一早就出错);为了验证我的想法,决定在开发机上重现这个错误;首先在mysql配置文件my.ini 加上 wait_timeout=30 让mysql经过30妙就关掉链接,重启应用,第一次访问成功,等待一分钟后访问果然出现同样的错误,说明问题诊断正确,着手修改配置如下: 28000 28000 配置解释:28000<28800 使c3p0 在mysql关不连接之前关闭自己持有的链接,配置idleConnectionTestPeriod 参数使c3po每隔28000检查已有的连接是否可用,这样应该确保拿到的连接都是可用的,如果还不放心可以加上 testConnectionOnCheckout参数每当拿出连接的时候就检查一下是否可以,这个可能会使mysql有一定的性能牺牲; true 通过以上修改检测一段时间没有出现同样问题,问题解决!总结解决问题的三个步骤:收集相关信息、重现问题、解决测试。
相关文章推荐
- 关于hibernate 利用c3p0连接mysql 数据库
- 关于hibernate 利用c3p0连接mysql 数据库
- hibernate 利用c3p0连接mysql 数据库 can't open session
- 关于hibernate配置c3p0连接池连接mysql问题
- mysql利用hibernate连接数据库出错
- 关于使用navicat for mysql在建立数据库连接时出现的2003 can't connect to mysql server on'localhost'(10038)问题
- 关于大并发mysql连接引起数据库错误OperationalError: (2003, "Can't connect to MySQL server on 'x.x.x.x (99)")分析
- 关于利用JDBC连接sqlserver中数据库的问题
- 关于利用JDBC连接sqlserver中数据库的问题
- 【救助】关于JDBC连接数据库改造成Hibernate连接数据库
- 关于利用JDBC连接sqlserver中数据库的问题
- 关于利用JDBC连接sqlserver中数据库的问题
- 关于连接mysql 数据库的问题
- qt5.8中关于mysql5.5数据库连接问题
- 利用c3p0配置数据库连接
- hibernate.cfg.xml配置文件,连接oracle数据库和mysql 数据库
- hibernate c3p0 连接无法释放 阻塞数据库操作
- 关于利用JDBC连接sqlserver中数据库的问题
- 关于数据库里cascade的用法,在MySQL和Hibernate是不同的
- spring + hibernate + c3p0 数据库连接用完问题排查