一、问题描述

​ 最近遇到了一个奇怪的MySql数据库问题,好几次前一天晚上历史数据还正常存储,第二天早上来了看实时数据存储还正常,历史数据不存储了。找了好久也没找到问题。后来仔细想了想,历史数据设置了变化才存储,是不是数据一直不变,就一直没有往数据库写数据,导致MySql的连接太久不用自动断开了。然后就百度了一下,Mysql空闲连接有效时长,一看都说是8个小时就自动断开了。嗯,有点感觉了,应该就是这个原因。

二、问题排查

根据查到的资料查看MySql 有两个参数,可以设定空闲连接的有效时长,分别是interactive_timeoutwait_timeout ,可以在mysql配置文件中设置。根据这一点,可以来进行排查了。

  1. 使用show variables like '%timeout%';命令查询以上两个参数的值,一查都是28800(单位是秒,刚好8小时)。
  2. 在mysql配置文件中修改interactive_timeoutwait_timeout都为100,这样连接100秒不使用就自动关闭了。
  3. 重启mysql服务,开始向数据库中插入数据,中间暂停3分钟(确保空闲连接已经断开),可以使用show status like 'Threads%'命令来查看当前的连接数,查询结果中Threads_connected即为当前连接数。
  4. 继续向mysql插入数据,一看数据果然没有存储上,问题成功复现并找到原因。

三、解决问题

  1. 查看数据存储部分代码,发现代码中有做断开重连,但是判断连接是否有效的部分写的有问题,也没有校验mysql_query的返回值,所以数据存储失败的时候没有产生日志。
  2. 修改代码,连接断开后自动重连,校验mysql_query的返回值并产生日志,使每次数据库操作结果都有记录。注意:mysql c/c++ API mysql_query返回 0为操作成功,非0为操作失败。

四、一点反思

​ 这个问题完全是由于代码写的不严谨造成的,如果代码写的严谨,该校验的地方都加上校验,就算出现问题也能快速定位。吃一堑,长一智以后需要多注意,养成良好的代码习惯。还有就是需要找时间系统的学习一下数据库方面的内容,项目锻炼是能够快速学习一些内容,但是都是用到哪部分学哪部分,不系统。还是需要自己多花时间系统的学。

MySql连接空闲8小时自动断开引起的问题的更多相关文章

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

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

  2. mysql在空闲8小时之后会断开连接(默认情况)

    调试程序的过程发现,在mysql连接空闲一定时间(默认8小时)之后会断开连接,需要重新连接,也引发我对重连机制的思考.

  3. Mac下ssh连接远程服务器时自动断开问题

    在mac下使用securecrt通过ssh连接远程服务器时,总会一段时间没有动作后,ssh被自动断开.在windows下用xmanager貌似没有遇到过这个问题. 在网上找了解决方法如下: 客户端配置 ...

  4. mysql的空闲8小时问题

    在spring中配置数据源时,必须设定destroy-method="close"属性,以便spring容器关闭时,数据源能正常关闭. 如果数据库时mysql,如果数据源配置不当, ...

  5. mysql 连接空闲超8小时自动断开连接问题(linux)

    在mysql配置文件里添加wait_timeout和interactive_timeout两个值 [mysqld] wait_timeout= interactive_timeout= 超时时间,10 ...

  6. dbcp基本配置和重连配置 -- mysql 8小时自动断开连接的问题

    1. 引入dbcp (选择1.4) Java代码   com.alibaba.external jakarta.commons.dbcp 1.4 2. dbcp的基本配置 相关配置说明: initia ...

  7. 配置phpmyadmin使登录时可填写IP管理多台MySQL 连接多个数据库 自动登录

    一.如何设置phpMyAdmin自动登录? 首先在根目录找到config.sample.inc.php复制一份文件名改为config.inc.php(如果已经存在 config.inc.php 文件, ...

  8. 【ORACLE】数据库空闲1分钟自动断开

    -- 开启参数,创建概要文件 SQL> show parameter resource_limit; NAME                                     TYPE  ...

  9. VPN帐号(每1小时自动断开及更新密码)

    免费的vpn帐号 http://freevpn.wwdhz.com/

随机推荐

  1. JS控制台打印佛祖加持护身符

    console.log([     "                   _ooOoo_",     "                  o8888888o" ...

  2. MySQL比like语句更高效写法locate position instr find_in_set

    你是否一直在寻找比MySQL的LIKE语句更高效的方法的,下面我就为你介绍几种. LIKE语句 SELECT `column` FROM `table` where `condition` like  ...

  3. WIN10 + VS 2013 配置Opencv2.4.1.3 32位

    VS2013 配置Opencv2.4.1.3    32位 系统变量 Path: F:\2biancheng_tool\Opencv2413\opencv\build\x86\vc12\bin 用户变 ...

  4. day14 Python集合的补充

    python_1 = ['charon','pluto','ran','charon'] linux_1 = ['ran','xuexue','ting'] p_s = set(python_1) l ...

  5. 天融信资料下载官方FTP服务器

    2017年更新:最近发现天融信的FTP服务器变更为了ftp://ftp.topsec.com.cn/,用户名:topsec,密码:topsec2016(不知道后期密码会不会改成topsec2017,如 ...

  6. Dubbo -- 系统学习 笔记 -- 快速启动

    Dubbo -- 系统学习 笔记 -- 目录 快速启动 服务提供者 服务消费者 快速启动 Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubb ...

  7. php WNMP(Windows+Nginx+Mysql+php)配置笔记

    下载安装 php 修改nginx 文件 参考云盘实例 eclipse php配置服务ip 127.0.0.1:999 以及项目路径(php解析路径)

  8. [Partition][Index]对于Partition表而言,是否Global Index 和 Local Index 可以针对同一个字段建立?

    对于Partition表而言,是否Global Index 和 Local Index 可以针对同一个字段建立? 实验证明,对单独的列而言,要么建立 Global Index, 要么建立 Local ...

  9. RabbitMQ 延时消息设计

    问题背景 所谓"延时消息"是指当消息被发送以后,并不想让消费者立即拿到消息,而是等待指定时间后,消费者才拿到这个消息进行消费. 场景一:客户A在十二点下了一个订单,我想半个小时后来 ...

  10. 小白学Docker之基础篇

    系列文章: 小白学Docker之基础篇 小白学Docker之Compose 小白学Docker之Swarm PS: 以下是个人作为新手小白学习docker的笔记总结 1. docker是什么 百科上的 ...