`

解决数据库连接池连接mysql时,每隔8小时mysql自动断开所有连接的问题

 
阅读更多

解决数据库连接池连接MySQL时,每隔8小时mysql自动断开所有连接的问题

最近有个问题非常讨厌,我们的工程中使用自己的连接池连接mysql数据库,可mysql数据库每隔8小时就会自动断开所有链接,连接池就失效,需要重新启动tomcat才有效,呵呵,服务器可不能老是用“人工智能”来干预啊,后来翻了一下mysql的手册,发现mysql有解决办法,下面就是最简单的解决办法:

连接数据库的时候加上autoReconnect=true这个参数:

jdbc:mysql://localhost:3306/accounant?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true

但是,在mysql手册中有这样一段话: 
驱动程序是否应尝试再次建立失效的和/或死连接? 如果允许,对于在失效或死连接上发出的查询(属于当前事务),驱动程序将抛出异常,但在新事务的连接上发出下一个查询时,将尝试再连接。不推荐使用该特性,这是因为,当应用程序不能恰当处理SQLExceptions时,它会造成与会话状态和数据一致性有关的副作用,设计它的目的仅用于下述情况,即,当你无法配置应用程序来恰当处理因死连接和/或无效连接导致的SQLExceptions时。作为可选方式,可将MySQL服务器变量“wait_timeout”设置为较高的值,而不是默认的8小时。 
呵呵,不知道这种“副作用”会产生什么后果,难道会使tomcat崩溃??会产生“数据一致性”问题??

保险一点的办法还是增加“wait_timeout”这个值吧,把28800设置成更大的值,这样应该就不会有什么问题了吧。 
windows下在my.ini文中增加: 
interactive_timeout=28800000 
wait_timeout=28800000

注:目前我使用的是autoReconnect这种方式,未发现什么问题

 

转载至: 
http://blog.csdn.net/liuxiaogangqq/article/details/41757501

分享到:
评论

相关推荐

    Qt 多线程连接数据库——数据库连接池

    * 数据库连接池特点: * 获取连接时不需要了解连接的名字,连接池内部维护连接的名字 * 支持多线程,保证获取到的连接一定是没有被其他线程正在使用 * 按需创建连接,可以创建多个连接,可以控制连接的数量 * 连接...

    基于 MySQL 协议,Swoole 开发的MySQL数据库连接池.zip

    将数据库连接作为对象存储在内存中,当用户需要访问数据库时,首次会建立连接,后面并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。 使用完毕后,用户也并非将连接关闭,而是将连接放回连接池...

    基于C++实现多线程连接池MySQL源码+项目说明+详细代码注释.zip

    基于C++实现多线程连接池MySQL源码+项目说明+详细代码注释.zip C++ 调用 MYSQL API 连接池 ## environment: * VS2022 * MySQL8.0.27 ## 高并发下频繁处理瓶颈 * 建立通信:`TCP三次握手` * 数据库服务器的`连接认证...

    Tomcat6连接池配置详解(自动重连)

    详细介绍Tomcat6的连接池配置,且数据库断开连接池可以自动重连,一看便会。

    Mybatis破MySql8小时断线问题1

    这时如果使用jdbc继续使用之前的连接,则会收到以下异常:mysql允许设置闲置时间,默认是8小时,最大是1年。大部分客户端都使用连接池以提高性能,如果用户访问

    SMProxy MySQL数据库连接池 v1.3.1

    为您提供SMProxy MySQL数据库连接池下载,SMProxy(Swoole MySQL Proxy)一个基于 MySQL 协议,Swoole 开发的MySQL数据库连接池。原理:将数据库连接作为对象存储在内存中,当用户需要访问数据库时,首次会建立连接...

    mysql连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案

    MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而 c3p0 连接池则以为该被断开的连接依然有效。在这种情况下,如果客户端代码向 c3p0 连接池请求连接的话,连接池就会把已经失效的...

    mysql数据库my.cnf配置文件

    # 这个值(默认8)表示可以重新利用保存在缓存中线程的数量,当断开连接时如果缓存中还有空间,那么客户端的线程将被放到缓存中, # 如果线程重新被请求,那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,...

    基于MySQL的数据库中间件Meituan-DBProxy.zip

    解决连接断开的内存泄露问题 在连接的结构体的释放接口中,lock 的成员变量未释放,导致在连接断开,回收连接对象时会泄漏24个字节 取消admin操作中不必要的日志 去掉了在连接 admin 时报"...

    易语言-Mysql线程池2.0模块

    ②在连接池初始化时增加了每一个mysql句柄各执行一次 “SET NAMES 数据库编码”的sql语句方法,可以选择执行还是不执行,防止查询数据库时因编码问题出现乱码。如数据库是utf8编码,里面包含中文,那么select或者...

    MySQL 5.1参考手册

    3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表的信息 3.5. 在批处理模式下使用mysql 3.6. ...

    MySQL 5.1参考手册中文版

    3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表的信息 3.5. 在批处理模式下使用mysql ...

    MYSQL优化详情大全

    避免频繁的连接和断开:频繁的连接和断开对数据库性能影响较大,可以使用连接池来管理数据库连接,减少连接开销。 优化服务器配置:根据服务器的硬件资源和数据库的需求,合理配置服务器参数,如缓冲区大小、并发...

    MYSQL中文手册

    3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表的信息 3.5. 在批处理模式下使用mysql...

    mysql5.1中文手册

    连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表的信息 3.5. 在批处理...

    mysql官方中文参考手册

    3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表的信息 3.5. 在批处理模式下使用mysql 3.6. ...

    Mysql经典的“8小时问题”

    MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而 c3p0 连接池则以为该被断开的连接依然有效。

    SMProxy-PHP

    将数据库连接作为对象存储在内存中,当用户需要访问数据库时,首次会建立连接,后面并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。 使用完毕后,用户也并非将连接关闭,而是将连接放回连接池...

    MySQL5.1参考手册官方简体中文版

    3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表的信息 3.5. 在批处理模式下使用mysql 3.6. ...

Global site tag (gtag.js) - Google Analytics