`

mysql连接空闲8小时自动断开问题DBCP解决方案

阅读更多
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的时间后关闭连接,然而连接池还认为该连接可用,这样就会产生异常。

  org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: : Communications link failure Last packet sent to the server was 1 ms ago. org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

  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的活动连接
分享到:
评论

相关推荐

    MySQL+Hibernate下连接空闲8小时自动断开问题解决方案.pdf

    解决 MySQL+Hibernate 连接空闲8小时自动断开问题 概述: 在使用 MySQL 和 Hibernate 进行数据库持久层开发时,可能会遇到连接空闲8小时自动断开的问题。本文将讨论该问题的解决方案,并对相关的知识点进行详细...

    DBCP连接池原理分析

    - **MySQL 8小时问题**:MySQL默认设置下,连接空闲8小时后会被自动断开,但DBCP连接池无法感知这一变化。 - **网络故障后的连接失效**:如遇到网络中断或数据库重启的情况,即使等待一段时间后,DBCP中的连接可能仍...

    javaee mysql空闲关闭

    在JavaEE应用中,MySQL数据库是...总之,处理JavaEE应用中的MySQL空闲关闭问题需要综合考虑数据库服务器的配置、连接池的管理策略以及应用本身的事务处理。正确配置和使用这些元素,可以确保应用的稳定性和资源效率。

    mysql连接池java源码

    阅读并理解这个纯Java实现的连接池源码,可以帮助我们深入理解数据库连接池的工作原理,为今后优化和定制自己的连接池解决方案打下坚实的基础。 总的来说,这个项目提供了一个学习和研究数据库连接池实现的绝佳...

    dbcp连接池包

    数据库连接池是提高数据库访问性能的关键技术之一,通过预先创建并维护一定数量的数据库连接,避免了每次连接和断开时的开销。 在Java中,数据库连接池的使用可以显著降低系统资源消耗,特别是在高并发环境下。DBCP...

    DBCP( Database Connection Pool )数据库连接池

    ### DBCP(Database Connection Pool)数据库连接池...DBCP是一个非常实用的数据库连接池解决方案,通过合理配置连接池参数,可以显著提升应用处理大量并发请求的能力。了解并掌握这些参数对于优化数据库访问至关重要。

    mysql数据连接池

    1. **连接池初始化**:在应用启动时,数据连接池会预先创建一定数量的数据库连接,这些连接被称为“空闲连接”并存储在池中,等待应用程序使用。 2. **连接获取与释放**:当应用需要访问数据库时,不再直接创建新的...

    commons.dbcp.BasicDataSource jar包

    DBCP就是为了解决这个问题而设计的,它通过复用已有的数据库连接,减少了创建和销毁连接的开销,提高了系统的性能。 标题中的"commons.dbcp.BasicDataSource"指的是DBCP库中的核心类`BasicDataSource`。这是一个...

    MySQL wait_timeout连接超时

    MySQL的`wait_timeout`连接超时问题通常出现在长时间无操作的数据库连接上,服务器会自动关闭这些连接以释放资源。这种现象在应用中可能导致突然的数据通信中断,表现为“Communications link failure”等错误,提示...

    dbcp包+ yi lai bao

    4. 自动重连:如果检测到连接断开,DBCP尝试自动重新建立连接。 5. 并发支持:支持多线程并发访问,保证了高并发环境下的稳定性和效率。 在实际使用DBCP时,我们需要在项目中添加对应的依赖。对于Java项目,通常是...

    c3p0,dbcp所需jar包

    3. **自动重连**:如果数据库连接意外断开,c3p0会尝试自动重新建立连接,保障应用程序的连续运行。 4. **多线程支持**:c3p0支持多线程环境下的并发连接管理,确保每个线程都能获得独立的数据库连接。 5. **性能...

    mysql connect pool

    在实际应用中,MySQL连接池的实现可以参考Apache的DBCP、C3P0、HikariCP等开源库。这些库提供了高效、稳定的连接池实现,具有自动管理连接、检测死锁、设置连接超时等特性。 `DispacherPersistSuport.java`和`...

    行业-39 案例实战:如何解决经典的Too many connections故障?背后原理是什么.rar

    例如,MySQL的`wait_timeout`和`interactive_timeout`参数,分别控制非交互式和交互式连接的空闲时间,超过这个时间未使用的连接会被自动断开。 3. **调整数据库配置**:根据应用的并发需求,适当增加`max_...

    mysql too many open connections问题解决方法

    5. **调整其他相关参数**:如`wait_timeout`和`interactive_timeout`,它们分别定义了非交互式和交互式连接在空闲多久后自动断开,以防止死连接占用资源。 通过以上措施,你可以有效地解决"Too many open ...

    JAVA 开发数据库连接池jar包

    通过监控,我们可以了解连接池的状态,如当前连接数、空闲连接数、借用和归还连接的速度等,以便于调优和问题排查。 总之,数据库连接池在Java开发中扮演着至关重要的角色,选择合适的连接池并正确配置可以显著提升...

    ConnectionPool 数据库连接池

    2. **监控与告警**:启用Druid等连接池的监控功能,对连接使用情况进行实时监控,及时发现并解决问题。 3. **事务管理**:正确使用事务,避免长时间占用连接。 4. **连接超时设置**:防止因长时间未使用的连接占用了...

    tomcat6配置数据库连接池代码

    连接池允许程序在需要时获取数据库连接,使用完毕后归还,而不是每次连接和断开都创建新的连接,从而提高性能并减少资源消耗。 本文将详细讲解如何在Tomcat6中配置数据库连接池,并以`index.jsp`为例展示如何在Web...

    SpringJDBC笔记

    此外,还可以考虑其他高性能的数据源解决方案,例如 HikariCP 等。 #### 四、总结 Spring JDBC 不仅简化了对 JDBC 的使用,还通过集成 Apache DBCP 和 C3P0 两种数据源实现提供了丰富的配置选项。开发人员可以根据...

    tomcat5.5配置数据库连接池

    当应用需要访问数据库时,它会从连接池中获取一个已建立的连接,使用完毕后归还,而不是每次连接和断开。这样可以显著减少创建和销毁连接的开销,提高系统的整体性能。 在Tomcat 5.5中,常用的数据库连接池实现有C3...

Global site tag (gtag.js) - Google Analytics