`
yujicun
  • 浏览: 1851 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

MySQL server has gone away-超时

阅读更多

 

遭遇MySQL server has gone away

一个开发MM的项目(PHP+MySQL)的PHP项目今天出现了MySQL server has gone away的错误,MySQL服务器端表示毫无压力。

而通过mysql客户端的连接方式mysql -hxx -uxx -pxx databasename -e xxx则毫无问题

而App服务器的netstat -a | grep 3306  | grep TIME_WAIT个数非常小,只有2个。

MySQL在连接超时这块的参数如下

root@(none) 09:24:51>show variables like '%out%';
+------------------------------+----------+
| Variable_name                | Value    |
+------------------------------+----------+
| connect_timeout              | 10       |
| delayed_insert_timeout       | 300      |
| handlersocket_timeout        | 300      |
| handlersocket_wrlock_timeout | 12       |
| innodb_lock_wait_timeout     | 100      |
| innodb_rollback_on_timeout   | OFF      |
| interactive_timeout          | 28800    |
| lock_wait_timeout            | 31536000 |
| log_output                   | FILE     |
| net_read_timeout             | 30       |
| net_write_timeout            | 60       |
| slave_net_timeout            | 3600     |
| wait_timeout                 | 28800    |
+------------------------------+----------+

最终MM把PHP连接MySQL的连接方式从长连接改成了短连接,就再没出现了。

后来查了下资料,总结如下

1.MySQL服务器的wait_timeout参数为默认的28800秒,即8小时。该参数的意思是MySQL等待睡眠的连接的持续时间,如果超过8小时不活动,MySQL就会关闭这个连接。这个参数可以动态修改,但这个参数是session级别的,需要应用重新建立连接获取这个变量值才会生效。

2.PHP的默认php.ini里面,default_socket_timeout参数是默认60s.default_socket_timeout参数的意思是socket超时为60s。 官方解释

3.在MySQL的官方文档里面,有专门的章节介绍MySQL Server has gone away。但并没有提及到客户端本身也会有超时机制,以前曾经试过把wait_timeout设置为1年,但App还是继续出现MySQL server has gone away的错误。

4.在PHP程序里面,如果php.ini修改起来不方便,可以以下代码来尝试解决。

ini_set('mysql.connect_timeout', 300);
ini_set('default_socket_timeout', 300);

在ini_set后,可以用ini_get来验证参数设置适合符合预期。

 

参考资料

1. MySQL server has gone away – in exactly 60 seconds

2.MySQL server has gone away

分享到:
评论

相关推荐

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

    其次,超时问题也是导致MySQL Server has gone away错误的常见原因。MySQL服务器有两组超时设置,`wait_timeout`和`interactive_timeout`。前者针对非交互式连接(如Web应用),后者针对交互式连接(如命令行客户端...

    解决MySQL server has gone away错误的方案

    MySQL server has gone away错误通常发生在客户端与MySQL服务器之间的连接突然中断时,这可能是由于多种原因引起的,如超时、请求的数据包过大或者内存资源耗尽等。为了解决这个问题,我们可以采取以下策略: 1. **...

    gearman中worker常驻后台,导致MySQL server has gone away的解决方法

    综上所述,处理“MySQL server has gone away”的关键在于理解超时机制和心跳策略,并根据实际情况调整配置或修改代码以实现更稳定的连接管理。同时,监控 MySQL 服务器的状态和 Gearman worker 的运行情况也是防止...

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

    MYSQL server has gone away 引起这个原因是不可怕的.原因是更改了系统的断开时间. mysql>show gloable variables like “%timeout%”; 进行查看 interactive_timeout 的黓认值为28800 wait_timeout 的默认值这:...

    MySQL常见问题集锦详解-完整版.pdf

    2. **MySQL Server Has Gone Away**: 这个错误通常是由于服务器超时关闭连接导致。默认情况下,服务器会在8小时后断开无活动的连接。可以通过设置`wait_timeout`变量在启动mysqld时调整这个时间限制。 3. **无法...

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

    然而,如果将其设置的太小,可能会遭遇到“MySQL has gone away” 之类的问题。 show variables 命令的误解 在使用 show variables 命令时,需要注意的是,这个命令实际上是查询的是会话变量,而不是全局变量。这...

    使用MySQL时的一些常见错误.docx

    本文将详细讨论两个常见的错误:“MySQL server has gone away”和“Can't connect to [local] MySQL server”。 首先,让我们关注“MySQL server has gone away”错误。这个错误通常意味着服务器在执行查询时超时...

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

    反之,如果设置的过小,可能会遭遇到“MySQL has gone away”之类的问题。 wait_timeout 参数的设置非常重要,因为它直接影响着 MySQL 的性能和稳定性。如果设置的不当,可能会导致连接超时、连接断开、甚至影响到...

    MySQL导入sql脚本错误:2006 解决方法

    在MySQL数据库操作中,有时我们在尝试导入大型SQL脚本时可能会遇到“2006 MySQL server has gone away”的错误。这个错误通常意味着MySQL服务器在执行过程中由于某种原因断开了连接,可能是由于超时、内存限制或者是...

    LNMP下使用命令行导出导入MySQL数据库的方法

    在执行导入操作时,有时会遇到`mysql server has gone away`的错误,这通常是由于数据库大小、超时或者内存不足导致的。为解决这个问题,可以修改MySQL的配置文件`my.cnf`,通常位于`/etc/my.cnf`: 1. 使用`vi`...

    使用Perl DBI操作MySQL的一些建议

    长时间运行的脚本可能会遇到MySQL服务器断开连接的问题,通常表现为"MySQL server has gone away"的错误。从DBD::mysql 4.012版本开始,可以通过设置`mysql_auto_reconnect`属性为1来实现自动重连: ```perl $dbh...

    6G数据库的导入 报各种错误的解决办法

    3. **错误3:mysql error nr.2006-mysql server has gone away**:此错误通常是由于上传文件大小限制或超时导致的。解决方法是修改MySQL配置文件,如`my.cnf`(Linux)或`my.ini`(Windows),增大`max_allowed_...

    Java Web十条开发实用小知识

    5. **MySQL "Server has gone away"问题**:这通常由于数据包过大或超时导致。解决方法是增加`max_allowed_packet`变量的值,如`SET GLOBAL max_allowed_packet=1024*1024*16;`,以允许更大的数据包传输。 6. **...

    django 数据库连接模块解析及简单长连接改造方法

    当连接超过这个时间没有活动,数据库服务器可能会关闭它,如果此时django尝试使用这个连接,就会发生错误,如InterfaceError或者Error(2006, 'MySQL server has gone away')。 为了解决这类问题,可以将django的...

Global site tag (gtag.js) - Google Analytics