您的当前位置:首页 >数据库 >MySQL为什么莫名其妙地断开连接以及解决方案! 正文
时间:2025-11-05 14:01:37 来源:网络整理编辑:数据库
前言最近遇到在将本地的项目部署到服务器上之后遇到的一个奇怪问题。在部署完成后,网站当时可以正常工作,但是第二天访问网站的时候却会遇到一个500 Server Error。从日志中可以看出是MySQL数

最近遇到在将本地的什莫项目部署到服务器上之后遇到的一个奇怪问题。
在部署完成后,名其妙地网站当时可以正常工作,断开但是连接第二天访问网站的时候却会遇到一个500 Server Error。
从日志中可以看出是及解决方MySQL数据库出现了异常:

翻译如下:
最后一个数据包在 83827560 ms 之前被成功接收,最后一个数据包在83827560 ms 之前被成功发送。什莫比服务的名其妙地配置参数wait_timeout的值要长。
日志中给出的断开建议如下:

翻译如下:
你应考虑在程序中进行数据库操作之前检验数据库连接的有效性或者将数据库的autoReconnect属性设置为true来避免这个问题。
关于wait_timeout和autoReconnect下面我们会依次分析介绍!
我们进入mysql的连接命令行查询超时时间。


28800单位是及解决方秒转化成小时就是8小时。
看出MySQL的什莫默认设置,当一个连接的名其妙地空闲时间超过8小时后,MySQL就会断开该连接。断开
所以发现问题出在如果超过这个wait_timeout时间(默认是连接8小时)对数据库没有任何操作,那么MySQL会自动关闭数据库连接以节省资源。及解决方
数据库连接自动断开的问题确实是在第二天发生了,免费源码下载也就是在一个晚上没有对数据库进行操作(显然超过了8小时)的情况下发生的这个问题。
大家用命令show processlist; 可以查看Sleep状态的进程Sleep,同时可以看到每个进程Sleep多久了:


下面介绍下解决和优化办法!
这个参数表示在mysql超时断开连接后会自动重新连接。
配置的话,只需要在连接mysql的语句写上autoReconnect=true。
复制jdbc:mysql://127.0.0.1:3306/stock_tweet?autoReconnect=true1.下面是MySQL官网对autoReconnect的解释:


同时可以看到官网不推荐使用这个参数,因为它有一些副作用。
具体介绍下:
原有连接上的事务将会被回滚,事务的提交模式将会丢失。原有连接持有的表的锁将会全部释放。原有连接关联的会话Session将会丢失,重新恢复的连接关联的将会是一个新的会话Session。原有连接定义的用户变量将会丢失。原有连接定义的网站模板预编译SQL将会丢失。原有连接失效,新的连接恢复后,MySQL将会使用新的记录行来存储连接中的性能数据。2、修改配置涉及到两个配置参数interactive_timeout和wait_timeout。
wait_timeout 指的是mysql在关闭一个非交互的连接之前所要等待的秒数。
interactive_time 指的是mysql在关闭一个交互的连接之前所要等待的秒数。
对于交互和非交互连接,说得直白一点就是,通过mysql客户端连接数据库是交互式连接,通过jdbc连接数据库是非交互式连接。
配置方法:
1.会话方式 复制msyql> set global wait_timeout=2880000;
msyql> set global interactive_timeout=2880000;1.2.这种方式只对当前会话生效。
2.修改配置文件方式修改/etc/my.cnf文件,在 [mysqld] 节中设置:

之后再重启下服务器就好了。
注意:将wait_timeout这个值设置得大了,可能会导致空闲连接过多。
如果你的MySQL Server有大量的香港云服务器闲置连接,他们不仅会白白消耗内存,而且如果连接一直在累加而不断开,最终肯定会达到MySQL Server的连接上限数,这会报too many connections的错误。 
因为连接池的配置也会影响项目和MySQL的连接,所以也需要对数据库连接池的一些配置做一定修改。
我们以Spring Boot 2.0默认的数据库连接池HikariCP为例。
主要是下面这几个配置maximum-pool-size:
最大连接数,超过这个数,新的数据库访问线程会被阻,缺省值:10。
常见的错误是设置一个太大的值,连接数多反而性能下降。
参考计算公式是:
复制#core_count:CPU个数,effective_spindle_count:硬盘个数
connections = ((core_count * 2) + effective_spindle_count)1.2.例如:一个4核,1块硬盘的服务器,连接数 = (4 * 2) + 1 = 9,凑个整数,10就可以了。
minimum-idle:
最小的连接数目。
max-lifetime:
最大的连接时间,用来设置一个connection在连接池中的存活时间。
缺省:30分钟。强烈建议设置比数据库超时时长少一点(MySQL的wait_timeout参数一般为8小时)。
idle-timeout:
一个连接idle状态的最长时间,超时则被释放。
其他参数详见:https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing。
以诺亚舟NE260点读机的优势和功能介绍(一款多功能实用的点读机,为孩子提供全方位学习支持)2025-11-05 13:33
《牧场物语电脑操作教程——让你成为农场达人》(从零基础到游戏高手,掌握关键技巧!)2025-11-05 13:22
深入了解u深度制作教程(从入门到精通,助你成为AI大师)2025-11-05 13:21
LOL电脑端新手教程(打造你的英雄传说,助你赢得荣耀)2025-11-05 12:55
影驰GTX650虎将性能评测(全面解析影驰GTX650虎将显卡的游戏性能与性价比)2025-11-05 12:22
电脑引导错误及解决方法(探究电脑引导错误的原因及有效解决方案)2025-11-05 11:49
如何通过改机械键盘音效提升打字体验(利用电脑键盘改造教程打造个性化机械音效)2025-11-05 11:48
如何制作U盘启动盘(简单易行的步骤帮您快速制作一枚U盘启动盘)2025-11-05 11:28
打开终端输入复制代码代码如下:pointer = 1 2 3 4 5 6 7 8 9 10 11 12保存注销即可2025-11-05 11:22
自制电脑文件盒教程(简单实用的DIY文件盒制作方法)2025-11-05 11:20
HD620集成显卡的性能和特点剖析(一起来了解IntelHD620集成显卡的强大表现与出众特点)2025-11-05 13:20
小米5和5s拍照效果对比(小米5和5s相机表现如何?一图胜千言,你就知道!)2025-11-05 12:50
如何更换蒙迪欧电脑板?(蒙迪欧电脑板更换教程及注意事项)2025-11-05 12:36
应对电脑浏览器被强制修改主页的方法(保护你的浏览器免受恶意软件侵害)2025-11-05 12:30
探究联想电脑0198错误的原因及解决方法(解读联想电脑启动出现0198错误的常见原因和有效解决方案)2025-11-05 12:11
磁盘重新分区教程(以简单步骤了解如何重新分区您的磁盘)2025-11-05 11:55
Win764位安装教程(轻松学会Win764位系统的安装与设置)2025-11-05 11:53
性价比较高的笔记本电脑品牌推荐(挑选高性能低价位笔记本电脑品牌,以品质为保证的1个)2025-11-05 11:42
51系统安装教程(详解51系统的安装步骤与技巧)2025-11-05 11:26