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

作者:

MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而 c3p0 连接池则以为该被断开的连接依然有效。在这种情况下,如果客户端代码向 c3p0 连接池请求连接的话,连接池就会把已经失效的连接返回给客户端,客户端在使用该失效连接的时候即抛出异常
解决这个问题的办法有三种:

1. 增加 MySQL 的 wait_timeout 属性的值。

修改 /etc/mysql/my.cnf文件,在 [mysqld] 节中设置:

# Set a connection to wait 8hours in idle status. 
wait_timeout =86400 
相关参数,红色部分 
mysql> show variables like '%timeout%'; 
+--------------------------+-------+ 
| Variable_name | Value | 
+--------------------------+-------+ 
| connect_timeout | 5 | 
| delayed_insert_timeout | 300 | 
| innodb_lock_wait_timeout | 50 | 
| interactive_timeout | 28800 | 
| net_read_timeout | 30 | 
| net_write_timeout | 60 | 
| slave_net_timeout | 3600 | 
| wait_timeout | 28800 | 
+--------------------------+-------+ 
同一时间,这两个参数只有一个起作用。到底是哪个参数起作用,和用户连接时指定的连接参数相关,缺省情况下是使用wait_timeout。我建议是将这两个参数都修改,以免引起不必要的麻烦。

这两个参数的默认值是8小时(60*60*8=28800)。我测试过将这两个参数改为0,结果出人意料,系统自动将这个值设置为。换句话说,不能将该值设置为永久。 
将这2个参数设置为24小时(60*60*24=604800)即可。 
set interactive_timeout=604800; 
set wait_timeout=604800;

2. 减少连接池内连接的生存周期,使之小于上一项中所设置的 wait_timeout 的值。 
修改 c3p0 的配置文件,设置:

# How long to keep unused connections around(in seconds) 
# Note: MySQL times out idle connections after 8hours(28,800seconds) 
# so ensure this value is below MySQL idle timeout 
cpool.maxIdleTime=25200 
在 Spring 的配置文件中:

复制代码代码如下:
<bean id="dataSource" 
class="com.mchange.v2.c3p0.ComboPooledDataSource"> 
<property name="maxIdleTime"value="${cpool.maxIdleTime}"/> 
<!--other properties --> 
</bean> 

3. 定期使用连接池内的连接,使得它们不会因为闲置超时而被 MySQL 断开。 
修改 c3p0 的配置文件,设置:

# Prevent MySQL raise exception after a long idle timecpool.preferredTestQuery='SELECT 1'cpool.idleConnectionTestPeriod=18000cpool.testConnectionOnCheckout=true 
修改 Spring 的配置文件:

复制代码代码如下:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 
<property name="preferredTestQuery" value="${cpool.preferredTestQuery}"/> 
<property name="idleConnectionTestPeriod" value="${cpool.idleConnectionTestPeriod}"/> 
<property name="testConnectionOnCheckout" value="${cpool.testConnectionOnCheckout}"/> 
<!--other properties --></bean> 

mysql自动断开该连接解决方案的更多相关文章

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

    在连接字符串中  添加设置节点 ConnectionLifeTime(计量单位为 秒).超过设定的连接会话 会被杀死! Connection Lifetime, ConnectionLifeTime ...

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

    1. 增加 MySQL 的 wait_timeout 属性的值.  修改 /etc/mysql/my.cnf文件,在 [mysqld] 节中设置: # Set a connection to wait ...

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

    解决数据库连接池连接mysql时,每隔8小时mysql自动断开所有连接的问题 最近有个问题非常讨厌,我们的工程中使用自己的连接池连接mysql数据库,可mysql数据库每隔8小时就会自动断开所有链接, ...

  4. PLSQL 经常自动断开失去连接的解决过程

    转: PLSQL 经常自动断开失去连接的解决过程 问题背景: 情况是这样的,很多开发同事的PLSQL上班时间开着8个小时,有时候他们出去抽烟后或者中午吃完饭,回来在PLSQL上面执行就报错无响应,然后 ...

  5. PLSQL自动断开服务器连接 (转)

    最近,有同事反映在使用PLSQL连接数据库的时候,总是出现数据库频繁自动断开连接.这是因为资源配置文件中IDLE_TIME参数的限制,IDLE_TIME指定会话允许连续不活动的总的时间,以分钟为单位, ...

  6. PDOMySQL实现类, 自动重置无效连接

    PHP连接MySQL时, 有可能因为MySQL的原因,而使得php里生成的连接无效.比如超过8小时, MySQL自动断开空闲连接的问题,虽然可以调高这个时间,但显然这不是比较文艺的实现方式.现在洒家用 ...

  7. 解决mysql默认的8小时自动断开连接

    语言:javaEE 框架:spring mvc+spring+mybatis 数据库:mysql8 WEB服务器:tomcat8 背景: 在试运营阶段发现发生“连接超时”异常 抛出异常: Cause: ...

  8. MySQL5.6数据库8小时内无请求自动断开连接

    问题: 最近的项目中,发现Mysql数据库在8个小时内,没有请求时,会自动断开连接,这是MySQL服务器的问题.The last packet successfully received from t ...

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

    转载连接:http://www.myexception.cn/database/1639209.html 本文提供了对c3p0与DBCP连接池连接MySql数据库时, 8小时内无请求自动断开连接的解决 ...

随机推荐

  1. 你必须知道的.net读书笔记第四回:后来居上:class和struct

     基本概念 1.1. 什么是class? class(类)是面向对象编程的基本概念,是一种自定义数据结构类型,通常包含字段.属性.方法.属性.构造函数.索引器.操作符等.因为是基本的概念,所以不必在此 ...

  2. C# 在PDF中绘制动态图章

    我们知道,动态图章,因图章中的时间.日期可以动态的生成,因而具有较强的时效性.在本篇文章中将介绍通过C#编程在PDF中绘制动态图章的方法,该方法可自动获取当前系统登录用户名.日期及时间信息并生成图章. ...

  3. Solr学习笔记---部署Solr到Tomcat上,可视化界面的介绍和使用,Solr的基本内容介绍,SolrJ的使用

    学习Solr前需要有Lucene的基础 Lucene的一些简单用法:https://www.cnblogs.com/dddyyy/p/9842760.html 1.部署Solr到Tomcat(Wind ...

  4. 程序员50题(JS版本)(二)

    程序6:用*号输出字母C的图案 console.log(' ****'); console.log(' ***'); console.log(' **'); console.log(' *'); co ...

  5. 跨域iframe如何实现高度自适应?

    经常有项目会要求实现iframe高度自适应,如果是同域的还好说,如果是跨域的,父页面没有办法操作子页面,想要正确获取子页面高度的话,可以采用以下办法: 方法一:使用HTML5 postMessage ...

  6. Belgrade Azure 2019-2-11活动感悟

    这是<国外线下技术俱乐部建设>系列文章之一.   活动网址:https://www.meetup.com/Azure-UG-Srbija/events/258673179/ 活动内容:Az ...

  7. 在 Apex 中得到 sObject 的信息

    Salesforce 的数据模型是基于 sObject 的.在 Apex 中,所有的标准对象.自定义对象都是继承自 sObject 的. 关于在 Apex 中得到 sObject 的信息,我们要基于两 ...

  8. windows键盘按键输入错乱;

    问题:打字异常,打字乱码: 最佳解决方案:下载工具快速修复: 链接: 链接:https://pan.baidu.com/s/1GpWT-MljgQHorLNMhQ9eOg提取码:anh0 官网文档原因 ...

  9. Sublime Text 3 常用插件 —— SFTP

    在 Win 下常用 Xftp 软件来和远程服务传递文件,但是要是在项目开发的时候频繁的将远程文件拖到本地编辑然后再传回远程服务器,那真是麻烦无比,但是Sublime中SFTP插件,它让这世界美好了许多 ...

  10. 安装MySQL8.0 遇到的3个小错误

    过去公司都是用的5.7 系列的MySQL,随着8.0的发版,也想试着升级一下.遇到了两个小错误,记录在此. 路径设置: 安装包路径:/data/mysql80/ 数据路径: /data/mysql/ ...