Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3017295
  • 博文数量: 535
  • 博客积分: 15788
  • 博客等级: 上将
  • 技术积分: 6507
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-07 09:11
文章分类

全部博文(535)

文章存档

2016年(1)

2015年(1)

2014年(10)

2013年(26)

2012年(43)

2011年(86)

2010年(76)

2009年(136)

2008年(97)

2007年(59)

分类: LINUX

2010-05-21 09:05:05

The last packet successfully received from the server was52536 seconds ago.The last packet sent successfully to the server was 52536 seconds ago, which  is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.

问:怎样才能解决mysql 8小时空闲后连接超时的问题?

  答:当应用程序和数据库建立连接时,如果超过了8个小时,应用程序句不会去访问数据库,数据库就会出现断掉连接的现象 。这时再次访问就会抛出异常


一般的解决方法大多是在数据库连接字符串中增加“autoReconnect=true ”选项。但是这只对mysql4以前的版本有效。在最新的mysql中是无效的。其实要解决这个问题也有一个简单的方法,就是修改mysql的启动参数。缺省情况下mysql的timeout时间是28800秒,正好是8小时,增加一个0就可以了。


mysql>show variables like '%timeout'; 

打印结果如下: 

+----------------------------+-------+ 
| Variable_name | Value | 
+----------------------------+-------+ 
| connect_timeout | 5 | 
| delayed_insert_timeout | 300 | 
| interactive_timeout | 28800 | 
| net_read_timeout | 30 | 
| net_write_timeout | 60 | 
| slave_net_timeout | 3600 | 
| wait_timeout | 28800 | 
+----------------------------+-------+ 


修改会话级变量

--修改会话级变量对当前会话来说立刻生效

mysql> set interactive_timeout=288000;

Query OK, 0 rows affected (0.00 sec)


mysql> set wait_timeout=288000;           

Query OK, 0 rows affected (0.00 sec)

退出重新连接后,此参数恢复原值


修改全局变量

用set GLOBAL 命令设置全局变量

mysql> set GLOBAL interactive_timeout=288000;

Query OK, 0 rows affected (0.00 sec)


mysql> set GLOBAL wait_timeout=288000;               

Query OK, 0 rows affected (0.00 sec)


当前此参数的值并不发生变化,先退出,然后重新连进去

mysql> show variables like '%timeout';              

+----------------------------+--------+

| Variable_name              | Value  |

+----------------------------+--------+

| connect_timeout            | 10     | 

| delayed_insert_timeout     | 300    | 

| innodb_lock_wait_timeout   | 50     | 

| innodb_rollback_on_timeout | OFF    | 

| interactive_timeout        | 288000 | 

| net_read_timeout           | 30     | 

| net_write_timeout          | 60     | 

| slave_net_timeout          | 3600   | 

| table_lock_wait_timeout    | 50     | 

| wait_timeout               | 288000 | 

+----------------------------+--------+

10 rows in set (0.00 sec)

新的参数值生效



或者加到my.cnf中

wait_timeout:
    服务器在关闭它之前在一个连接上等待行动的秒数。
interactive_timeout:
    服务器在关闭它前在一个交互连接上等待行动的秒数。


阅读(3845) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~