Mysql服务器默认的“wait_timeout”是8小时,也就是说一个connection空闲超过8个小时,Mysql将自动断开该 connection。connections如果空闲超过8小时,Mysql将其断开,而DBCP并不知道该connection已经失效,如果这时有 Client请求connection,DBCP将该失效的Connection提供给Client,将会造成上面的异常。
mysql配置中my.cnf 的wait_timeout值一定要大于等于连接池种的idle_timeout 值。否则mysql会在wait_timeout的时间后关闭连接,然而连接池还认为该连接可用,这样就会产生异常。
DBCP连接池说明:
driverClassName
url
username
password
上面四个分别是驱动,连接字符串,用户名和密码
maxActive 连接池支持的最大连接数
maxIdle 连接池中最多可空闲maxIdle个连接
minIdle 连接池中最少空闲maxIdle个连接
initialSize 初始化连接数目
maxWait 连接池中连接用完时,新的请求等待时间,毫秒
timeBetweenEvictionRunsMillis和minEvictableIdleTimeMillis一起使用,每
timeBetweenEvictionRunsMillis毫秒秒检查一次连接池中空闲的连接,把空闲时间超过minEvictableIdleTimeMillis毫秒的连接断开,直到连接池中的连接数到minIdle为止
主要把这两个参数加上就好。
minEvictableIdleTimeMillis 连接池中连接可空闲的时间,毫秒
removeAbandoned true,false,是否清理removeAbandonedTimeout秒没有使用的活动连接,清理后并没有放回连接池
removeAbandonedTimeout 活动连接的最大空闲时间
logAbandoned true,false,连接池收回空闲的活动连接时是否打印消息
minEvictableIdleTimeMillis, removeAbandonedTimeout这两个参数针对的连接对象不样,minEvictableIdleTimeMillis针对连接池中的连接 对象,removeAbandonedTimeout针对未被close的活动连接
DBCP配置参数: http://commons.apache.org/dbcp/configuration.html
分享到:
相关推荐
解决这个问题的办法有三种: 1. 增加 MySQL 的 wait_timeout 属性的值。 修改 /etc/mysql/my.cnf文件,在 [mysqld] 节中设置: # Set a connection to wait 8hours in idle status. wait_timeout =86400 相关参数,...
可以直接通过设置来达到重连问题,方法很简单,里面有复现自动断开连接导致不能正常插入数据的方法,是自己没有积分所以才要积分
nodejs 关于mysql模块 连接超时自动断开解决方法,在这块遇到的坑,而且坑了很久才找到的,分享只为求分
网上找了很多解决办法,几乎没有一个能完美解决问题的,大体都是首先执行一段query后看返回结果,但这个办法也太无用和耗费资源了吧...因为断开后isOpen和isValid都会返回true,所以不能从这里入手...
本文讨论了 MySQL+Hibernate 连接空闲8小时自动断开的问题,并提供了相关的解决方案。通过使用 C3P0 连接池机制,可以解决连接空闲8小时自动断开的问题。同时,需要进行测试和部署,以确保连接池机制正确地工作。
MySQL+Hibernate 连接空闲8小时自动断开问题解决方案 知识点1: Hibernate 的连接池机制 在 Hibernate 中,默认情况下 使用的是 DriverManagerConnectionProvider,这是一个简单的连接池机制。它将打开的连接缓存在...
在mysql数据库中,如果一个连接8小时没有请求和操作,就会自动断开,从而导致一些基于数据库连接的应用程序,特别是 web 应用程序出错。 1、操作步骤 我的电脑-右击-服务-找到mysql服务 双击新窗口中 -》恢复...
3. 在代码中使用`mysql_options()`函数设置`MYSQL_OPT_RECONNECT`选项,以便在连接断开后自动重连,因为`caching-sha2-password`可能会在认证过程中断开连接。 为了成功完成上述步骤,你需要下载和安装合适的MinGW...
在本文中,我们将深入探讨这个问题的原因,并提供相应的解决方法。 首先,我们来理解一下MySQL中“Sleep”状态的含义。当一个客户端与MySQL服务器建立连接并执行SQL查询后,如果在指定时间内没有新的请求发送到...
如果超过这个时间没有活动,连接将被自动断开。 - `SET GLOBAL interactive_timeout=300`:设置交互式连接的超时时间。与`wait_timeout`类似,但适用于交互式会话,如MySQL客户端。 ### **永久解决方案** 1. **...
当应用程序遇到这种问题时,一种常见的解决方案是在数据库连接字符串中添加"autoReconnect=true"选项,试图在断开连接后自动重新连接。然而,对于MySQL 4.0之前的版本,这种方法可能有效,但在较新的MySQL版本中,...
Spring Boot 解决 Mysql ...解决 Spring Boot 连接 Mysql 断连问题可以使用多种方法,包括在 application.properties 文件中添加配置项、修改 Mysql 的 wait_timeout 参数等。选择合适的方法可以根据实际情况进行选择。
该异常通常意味着与MySQL服务器的通信出现问题,例如网络中断、服务器端主动断开连接等。 #### 异常详情 本次异常的具体描述为:“Communications link failure due to underlying exception: **BEGINNESTED ...
在描述中提到的解决方案是通过调整MySQL的配置来解决8小时空闲后连接超时的问题。有两种方法: 1. 修改启动参数: 在启动MySQL服务时,可以添加`--interactive_timeout=288000`参数,将交互式连接的超时时间设置为...
为了解决这个问题,开发者通常会创建可复用的类库,将常用功能封装起来。在这个压缩包中,我们有三个核心类文件:`image.class.php`、`smtp.class.php`和`mysql.class.php`,它们分别对应邮件发送、MySQL数据库连接...
在本案例中,我们看到一种解决方案,即结合Hibernate ORM框架和Proxool连接池来处理MySQL的自动断连问题。 首先,让我们深入了解一下Hibernate。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者将...
标题中的"StatementInvalid: Mysql::Error: query: not connected"是一个常见的MySQL错误,提示数据库连接已断开,用户在尝试执行查询时遇到了问题。这个错误通常发生在以下几种情况: 1. **数据库连接未建立**:在...
在JavaEE应用中,MySQL数据库是常见的数据存储解决方案。然而,为了优化资源使用,MySQL配置了一个参数`wait_timeout`,这个参数定义了连接在空闲多长时间后会被自动关闭。当JavaEE应用中的数据库连接在超过这个设定...