`
sarin
  • 浏览: 1747996 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
E3b14d1f-4cc5-37dd-b820-b6af951740bc
Spring数据库访问系列...
浏览量:172816
C2083dc5-6474-39e2-993e-263652d27795
Android学习笔记
浏览量:366549
5f40a095-b33c-3e8e-8891-606fcf3b8d27
iBatis开发详解
浏览量:188303
B272a31d-e7bd-3eff-8cc4-c0624ee75fee
Objective-C学习...
浏览量:98739
社区版块
存档分类
最新评论

MySQL数据库连接超时(wait_timeout)问题的处理

阅读更多
    想必大家在用MySQL时都会遇到连接超时的问题,如下图所示:

    就是这个异常(com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:Communications link failure Last packet sent to the server was X ms ago),是由于MySQL服务在长时间不连接之后断开了,断开之后的首次请求会抛出这个异常。那么既然是连接超时的问题,就要去MySQL中探究一下连接时间是怎么控制的。打开MySQL的控制台,运行:show variables like ‘%timeout%’,查看和连接时间有关的MySQL系统变量,得到如下结果:

    其中wait_timeout就是负责超时控制的变量,其时间为长度为28800s,就是8个小时,那么就是说MySQL的服务会在操作间隔8小时后断开,需要再次重连。也有用户在URL中使用jdbc.url=jdbc:mysql://localhost:3306/nd?autoReconnect=true来使得连接自动恢复,当然了,这是可以的,不过是MySQL4及其以下版本适用。MySQL5中已经无效了,必须调整系统变量来控制了。MySQL5手册中对两个变量有如下的说明:
    interactive_timeout:服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。又见wait_timeout
    wait_timeout:服务器关闭非交互连接之前等待活动的秒数。在线程启动时,根据全局wait_timeout值或全局interactive_timeout值初始化会话wait_timeout值,取决于客户端类型(由mysql_real_connect()的连接选项CLIENT_INTERACTIVE定义),又见interactive_timeout
    如此看来,两个变量是共同控制的,那么都必须对他们进行修改了。继续深入这两个变量wait_timeout的取值范围是1-2147483(Windows),1-31536000(linux),interactive_time取值随wait_timeout变动,它们的默认值都是28800。
    MySQL的系统变量由配置文件控制,当配置文件中不配置时,系统使用默认值,这个28800就是默认值。要修改就只能在配置文件里修改。Windows下在%MySQL HOME%/bin下有mysql.ini配置文件,打开后在如下位置添加两个变量,赋值。(这里修改为388000)
    保存退出,重启mysql服务,一定是重启系统服务。便可看到修改结果:

    Linux系统下的配置文件为/etc/my.cnf。需要多说一点的是:windows下的配置文件具体是哪个需要从windows系统服务中找到mysql,打开属性,看“可执行文件路径”里面的参数值,因为它可能是my.cnf而不是my.ini,这是由于安装时的设置,我们可能会忽略它。

    至此,修改完成,那么连接超时的问题从数据库上就解决了。当然在编程时也可以使用连接池设置超时时间,配置相对简单。但修改数据库更为本质一些。
    个人见解。希望对使用者有用。
  • 大小: 15.1 KB
  • 大小: 35.8 KB
  • 大小: 23.4 KB
  • 大小: 49.2 KB
6
2
分享到:
评论
2 楼 qxpidt 2014-10-14  
你这样调大,不会造成连接数释放不了吗?
1 楼 shusheyu 2013-08-03  
[b][i][u]
引用
[list]
[*][list]
[*][*][list]
[*][*][*][list]
[*][*][*][*][list]
[*][*][*][*][*][img][*][*][*][*][*][*][*][*][*][*]
[flash=200,200][flash=200,200][flash=200,200][flash=200,200][flash=200,200][flash=200,200][flash=200,200][flash=200,200][flash=200,200][flash=200,200][flash=200,200][flash=200,200][flash=200,200][flash=200,200][flash=200,200][flash=200,200][flash=200,200][flash=200,200][url][img][/img][/url][/flash][/flash][/flash][/flash][/flash][/flash][/flash][/flash][/flash][/flash][/flash][/flash][/flash][/flash][/flash][/flash][/flash][/flash]
[/img] [*][*][*][*][/list] [*][*][*][/list] [*][*][/list] [*][/list] [/list]
[/u][/i][/b]

相关推荐

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

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

    MySQL wait_timeout连接超时

    关于MySQL的wait_timeout连接超时问题报错详细解决方案

    解决MySQL 5数据库连接超时问题

    mysql5将其连接的等待时间(wait_timeout)缺省为8小时。怎么不让它超时呢

    mysql提示got timeout reading communication packets的解决方法

    错误提示: user: ‘root’ host: `localhost’ (Got timeout reading communication ...wait_timeout 的默认值这:120 根据情况增加吧. 这两个值是一个全局变量,可以动态增加,如: mysql> set global interactiv

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

    。。。

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

    。。。

    mysql数据库my.cnf配置文件

    innodb_lock_wait_timeout = 120 # InnoDB事务在被回滚之前可以等待一个锁定的超时秒数。InnoDB在它自己的锁定表中自动检测事务死锁并且回滚事务。InnoDB用LOCK TABLES语句注意到锁定设置。默认值是50秒 bulk_insert...

    MySQL server has gone away错误提示解决方法

    还有一种可能是因为某些原因导致超时,比如说程序中获取数据库连接时采用了Singleton的做法,虽然多次连接数据库,但其实使用的都是同一个连接,而且程序中某两次操作数据库的间隔时间超过了wait_timeout(SHOW ...

    ActivityTools2

    “ config.sql”是在mysql服务器中设置两个参数“ wait_timeout”,“ interactive_timeout”,以防止sql连接超时。 由于msyql连接超时或某些其他原因,数据收集工具可能会崩溃,在这种情况下,您可以重新启动数据...

    实例操作MySQL短链接

    MySQL短链接怎么设置 ...6.可以重新使用show global variables like ‘wait_timeout’来验证。 这种方法比较直观,而且设置的参数立即生效。 以上步骤很简单,感谢大家的阅读和对软件开发网的支持。 您

    服务器配置.docx

    ,选择SQL文件点击执行 设置数据库空闲超时时间 查看数据库空闲超时时间:输入[show global variables like 'wait_timeout';]点击回车后效果如下: 设置数据库空闲超时时间:输入[set global wait_timeout=2592000;]...

Global site tag (gtag.js) - Google Analytics