mysql dbcp 自动断开

转载 2013年12月02日 15:11:35

一项目用Mysql+S2SH,数据源用dbcp,部署好后,运行了一夜吧,第二天就报错,log显示大致就是

System Runtime Error:

Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin failed:

javax.servlet.ServletException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin failed: at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515) at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.buptnu.usermanage.filter.LoginFilter.doFilterInternal(LoginFilter.java:58) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199) at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282) at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767) at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697) at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595)


 

 

 Mysql服务器默认的“wait_timeout”是28800秒,即为8小时,也就是说一个connection空闲超过8个小时,Mysql将自动断开该 connection。connections如果空闲超过8小时,Mysql将其断开,而DBCP并不知道该connection已经失效,如果这时有 Client请求connection,DBCP将该失效的Connection提供给Client,将会造成上面的异常。
        mysql配置中的wait_timeout值一定要大于等于连接池种的idle_timeout 值。否则mysql会在wait_timeout的时间后关闭连接,然而连接池还认为该连接可用,这样就会产生异常。

mysql中如何查看wait_timetout:进入mysql命令  输入命令:

mysql> show global variables like 'wait_timeout';

 一般不建议修改mysql默认的wait_timeout值。

 

直接在dbcp的配置中简单配置即可:

6.timeBetweenEvictionRunsMillis = 20000
  //这个值要小于mysql中的 'wait_timeout' 28800 
7.minEvictableIdleTimeMillis = 28000


 

timeBetweenEvictionRunsMillis毫秒秒检查一次连接池中空闲的连接,把空闲时间超过minEvictableIdleTimeMillis毫秒的连接断开,直到连接池中的连接数到minIdle为止


参考:http://blog.csdn.net/tonychanhoho/article/details/7521876

c3p0 配置详解+mysql 8小时自动断开连接的解决

官方文档 : http://www.mchange.com/projects/c3p0/index.html 3   30   1000   false ...
  • wdq892157341
  • wdq892157341
  • 2014年11月02日 14:12
  • 1480

解决mysql自动断开连接的问题

解决mysql自动断开连接的问题 有三个方法可以解决这个问题: 1:修改MySQL配置参数 2:修改JDBC 3:修改第三方的数据库连接池应用 Proxool.xml   ...
  • sunshine_love
  • sunshine_love
  • 2013年09月02日 10:21
  • 5015

mysql超时设置的问题,如果连接闲置8小时 (8小时内没有进行数据库操作), mysql就会自动断开连接, 要重启tomcat

mysql超时设置的问题 com.mysql.jdbc.CommunicationsException: The last packet successfully received fr...
  • oWuFeng1
  • oWuFeng1
  • 2014年04月18日 12:19
  • 2283

mysql默认8小时连接断开机制解决

转载连接:http://www.myexception.cn/database/1639209.html 本文提供了对c3p0与DBCP连接池连接MySql数据库时, 8...
  • u012129031
  • u012129031
  • 2017年05月22日 09:38
  • 1038

mysql控制自动重连行为

当向mysql server发送statement时,mysql客户端发现连接失效后会自动尝试重新连接server。如果"自动重连"状态是enabled,客户端尝试连接server,并在连接成功后重新...
  • jeffrey_li
  • jeffrey_li
  • 2017年02月03日 12:07
  • 1304

MySQL之——使用c3p0与DBCP连接池,造成的MySql 8小时问题解决方案

一、问题描述 最近在做一个Java Web项目,框架为Spring MVC+JPA,使用c3p0连接池,发布环境为Tomcat 7,项目运行一段时间(大概几个小时),之后访问时会出现第一次访问报错 ,...
  • l1028386804
  • l1028386804
  • 2017年01月16日 23:30
  • 611

dbcp自动重连机制

转自:http://agapple.iteye.com/blog/791943 数据库链接 常见的问题: 1. 数据库意外重启后,原先的数据库连接池能自动废弃老的无用的链接...
  • linminqin
  • linminqin
  • 2014年11月14日 11:08
  • 7572

spring配置dbcp链接数据库

1.spring的配置文件 springmvc-servlet.xml classpath:jdbc.properties ...
  • u013147600
  • u013147600
  • 2016年01月14日 13:34
  • 2364

Java编程使用DBCP连接MySQL数据库(十一)

(一)什么是数据库连接池? 1.使用JDBC 编程,每次访问数据库都需要创建连接对象,访问结束时又要销毁连接对象。使得JDBC访问数据库效率低。 2.数据库连接池就是管理连接对象。 3...
  • weixin_36279318
  • weixin_36279318
  • 2017年12月04日 18:57
  • 92

MYSQL客户端连接和断开MySQL服务器

3.1连接和断开与服务器的连接 要连接到服务器,通常需要在调用mysql时提供一个MySQL用户名,最有可能是一个密码。如果服务器在不同于您登录的计算机上运行,​​则还需要指定主机名...
  • anzhen0429
  • anzhen0429
  • 2017年06月20日 22:01
  • 545
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mysql dbcp 自动断开
举报原因:
原因补充:

(最多只允许输入30个字)