`
hanyi366
  • 浏览: 289335 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

MySQL8小时连接超时断开问题

 
阅读更多

 

使用Connector/J连接MySQL数据库,程序运行较长时间后就会报以下错误:

Communications link failure,The last packet successfully received from the server was *** millisecond ago.The last packet successfully sent to the server was ***  millisecond ago。

其中错误还会提示你修改wait_timeout或是使用Connector/J的autoReconnect属性避免该错误。

后来查了一些资料,才发现遇到这个问题的人还真不少,大部分都是使用连接池方式时才会出现这个问题,短连接应该很难出现这个问题。这个问题的原因:

MySQL服务器默认的“wait_timeout”是28800秒即8小时,意味着如果一个连接的空闲时间超过8个小时,MySQL将自动断开该连接,而连接池却认为该连接还是有效的(因为并未校验连接的有效性),当应用申请使用该连接时,就会导致上面的报错。

 

1.按照错误的提示,可以在JDBC URL中使用autoReconnect属性,实际测试时使用了autoReconnect=true&failOverReadOnly=false,不过并未起作用,使用的是5.1版本,可能真像网上所说的只对4之前的版本有效。

 

2.没办法,只能修改MySQL的参数了,wait_timeout最大为31536000即1年,在my.cnf中加入:

[mysqld]

wait_timeout=31536000

interactive_timeout=31536000

重启生效,需要同时修改这两个参数。

 

3.线上服务重启无论如何都应该尽可能避免,看看如何在MySQL命令行里通过SET来设置:

mysql> set global wait_timeout= 31536000;
mysql> show global variables like 'wait_timeout';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| wait_timeout               | 31536000    |
+----------------------------+-------+


 

分享到:
评论

相关推荐

    nodejs 关于mysql模块 连接超时自动断开解决方法

    nodejs 关于mysql模块 连接超时自动断开解决方法,在这块遇到的坑,而且坑了很久才找到的,分享只为求分

    mysql 8小时空闲后连接超时的问题

    总结来说,解决MySQL8小时空闲后连接超时问题的方法包括修改MySQL的启动参数或配置文件,以及优化应用程序的数据库连接管理,如使用连接池。同时,关注数据库性能优化,如使用合适的查询语句和数据类型,可以提升...

    qt中mysql超时自动断开连解决方案.txt

    可以直接通过设置来达到重连问题,方法很简单,里面有复现自动断开连接导致不能正常插入数据的方法,是自己没有积分所以才要积分

    Mybatis破MySql8小时断线问题1

    标题 "Mybatis破MySql8小时断线问题1" 指的是在使用Mybatis框架与MySQL数据库交互时遇到的一个常见问题,即由于MySQL数据库的连接超时机制导致的8小时断线。描述中提到,当数据库连接闲置时间超过MySQL默认设定的8...

    Qt Mysql超时断开后自动重连完美解决方法

    网上找了很多解决办法,几乎没有一个能完美解决问题的,大体都是首先执行一段query后看返回结果,但这个办法也太无用和耗费资源了吧...因为断开后isOpen和isValid都会返回true,所以不能从这里入手...

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

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

    MySQL数据库连接超时(Wait_timeout)问题总结.pdf

    这一特性在MySQL中是默认开启的,其默认超时时间是8小时,即28800秒。 当应用程序遇到这种问题时,一种常见的解决方案是在数据库连接字符串中添加"autoReconnect=true"选项,试图在断开连接后自动重新连接。然而,...

    关于MySQL的wait-timeout连接超时问题报错解决方案.pdf

    MySQL 连接超时问题解决方案 在 MySQL 中,wait_timeout 参数控制着连接的超时时间,如果设置的过大,可能会导致大量的 SLEEP 进程无法及时释放,拖累系统性能;反之,如果设置的过小,可能会遭遇到“MySQL has ...

    MySQL wait_timeout连接超时

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

    hibernate+proxool解决mysql8小时问题(附带jar包)

    MySQL数据库在长时间无操作的情况下,为了节省资源,会自动关闭闲置的连接,这通常被称为“8小时问题”。为了解决这个问题,开发者通常需要采取特定的策略,比如使用连接池。在本案例中,我们看到一种解决方案,即...

    Mysql经典的“8小时问题”

    MySQL中的“8小时问题”是一个常见的数据库连接管理问题,尤其在使用连接池如c3p0的情况下。这个问题的根源在于MySQL服务器的默认配置与连接池的管理策略之间的不协调。MySQL在空闲连接达到一定时间(默认8小时,即`...

    ODBC访问MySQL

    ODBC(Open Database Connectivity)是微软推出的一种数据库访问标准,它提供了一种统一的方式来访问不同数据库系统,包括MySQL。在本教程中,我们将探讨如何利用C#语言通过ODBC接口来构建一个简单的数据库应用程序...

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

    **设置连接池的连接存活时间小于 `wait_timeout`**:在 c3p0 连接池的配置中,可以设置 `maxIdleTime` 参数,使其小于 MySQL 的超时时间,这样连接池会更早地回收和关闭连接,避免因 MySQL 自动断开连接导致的问题。...

    druid1.1.10和mysql8的jdbc驱动.zip

    开发人员通常会配置 Druid 连接池,设定数据源属性(如最大连接数、最小连接数、超时时间等),然后通过 DruidDataSource 获取数据库连接,再使用 JDBC API 执行 SQL 语句。 总结起来,`druid1.1.10和mysql8的jdbc...

    使用数据库连接池proxool配置mysql数据库

    MySQL默认的会话超时时间是8小时,超过这个时间未使用的连接会被自动断开。对于长时间运行的应用,这可能导致连接失效,进而影响应用程序的稳定性。通过使用Proxool,我们可以设置连接的生命周期,确保即使超过了...

    Spring Boot如何解决Mysql断连问题

    这个问题是由于 Mysql 的.wait_timeout 参数所致,默认情况下,wait_timeout 的值是 8 小时,如果连接空闲时间超过 8 小时,Mysql 将自动关闭这个连接。 导致断连的原因是 Mysql 的默认行为。Mysql 在发现一个连接...

    mysql的连接数据问题

    本篇文章将深入探讨MySQL的连接数据问题,旨在帮助用户理解和解决在数据库操作过程中遇到的连接问题。 一、MySQL连接方式 1. 命令行连接:通过终端或命令提示符输入`mysql -u username -p`,然后输入密码,可以直接...

Global site tag (gtag.js) - Google Analytics