最近做网站有一个站要用到WEB网页采集器功能,当一个PHP脚本在请求URL的时候,可能这个被请求的网页非常慢慢,超过了mysql的 wait-timeout时间,然后当网页内容被抓回来后,准备插入到MySQL的时候,发现MySQL的连接超时关闭了,于是就出现了“MySQL server has gone away”这样的错误提示,解决这个问题,我的经验有以下两点,或许对大家有用处:

  第一种方法:
当然是增加你的 wait-timeout值,这个参数是在my.cnf(在Windows下台下面是my.ini)中设置,我的数据库负荷稍微大一点,所以,我设置的值 为10,(这个值的单位是秒,意思是当一个数据库连接在10秒钟内没有任何操作的话,就会强行关闭,我使用的不是永久链接 (mysql_pconnect),用的是mysql_connect,关于这个wait-timeout的效果你可以在MySQL的进程列表中看到 (show processlist) ),你可以把这个wait-timeout设置成更大,比如300秒,呵呵,一般来讲300秒足够用了,其实你也可以不用设置,MySQL默认是8个小 时。情况由你的服务器和站点来定。
  第二种方法:
这也是我个人认为最好的方法,即检查 MySQL的链接状态,使其重新链接。
可能大家都知道有mysql_ping这么一个函数,在很多资料中都说这个mysql_ping的 API会检查数据库是否链接,如果是断开的话会尝试重新连接,但在我的测试过程中发现事实并不是这样子的,是有条件的,必须要通过 mysql_options这个C API传递相关参数,让MYSQL有断开自动链接的选项(MySQL默认为不自动连接),但我测试中发现PHP的MySQL的API中并不带这个函数,你重新编辑MySQL吧,呵呵。但mysql_ping这个函数还是终于能用得上的,只是要在其中有一个小小的操作技巧:
这是我的的数据库操作类中间的一个函数
function ping(){    
    if(!mysql_ping($this->link)){    
        mysql_close($this->link); //注意:一定要先执行数据库关闭,这是关键   
        $this->connect();    
    }    
}
我需要调用这个函数的代码可能是这样子的
$str = file_get_contents(’http://www.tianqiyugao.net’);   
$db->ping();//经过前面的网页抓取后,或者会导致数据库连接关闭,检查并重新连接   
$db->query(’select * from table’);
ping()这个函数先检测数据连接是否正常,如果被关闭,整个把当前脚本的MYSQL实例关闭,再重新连接。
经 过这样处理后,可以非常有效的解决MySQL server has gone away这样的问题,而且不会对系统造成额外的开销。
今天遇到类似的情景,MySQL只是冷冷的说:MySQL server has gone away。
  大概浏览了一下,主要可能是因为以下几种原因:
一种可能是发送的SQL语句太长,以致超过了max_allowed_packet的大小,如果是这种原因,你只要修改my.cnf,加大max_allowed_packet的值即可。
还有一种可能是因为某些原因导致超时,比如说程序中获取数据库连接时采用了Singleton的做法,虽然多次连接数据库,但其实使用的都是同一个连接,而且程序中某两次操作数据库的间隔时间超过了wait_timeout(SHOW STATUS能看到此设置),那么就可能出现问题。最简单的处理方式就是把wait_timeout改大,当然你也可以在程序里时不时顺手 mysql_ping()一下,这样MySQL就知道它不是一个人在战斗。
  解决MySQL server has gone away
  1、应用程序(比如PHP)长时间的执行批量的MYSQL语句。最常见的就是采集或者新旧数据转化。
  解决方案:
在my.cnf文件中添加或者修改以下两个变量:
wait_timeout=2880000
interactive_timeout = 2880000
关于两个变量的具体说明可以google或者看官方手册。如果不能修改my.cnf,则可以在连接数据库的时候设置CLIENT_INTERACTIVE,比如:
sql = “set interactive_timeout=24*3600”;
mysql_real_query(...)
2、执行一个SQL,但SQL语句过大或者语句中含有BLOB或者longblob字段。比如,图片数据的处理
 解决方案:
在my.cnf文件中添加或者修改以下变量:
max_allowed_packet = 10M(也可以设置自己需要的大小)
max_allowed_packet参数的作用是,用来控制其通信缓冲区的最大长度

转载于:https://blog.51cto.com/caixia/670128

如何解决MySQL连接超时关闭相关推荐

  1. MySQL连接问题【如何解决MySQL连接超时关闭】

    --MySQL连接问题[如何解决MySQL连接超时关闭] ------------------------------------------------转载 最近做网站有一个站要用到WEB网页采集器 ...

  2. 解决mysql数据库连接超时问题

    前段时间部署在服务器上的网站遇到一个问题:当较长时间没有去访问网站,再次打开时就会报一个数据库连接失败的错误,不管是用ssh开发的项目还是ssm开发的项目,都有这个问题.本篇博客记录这个问题的原因与解 ...

  3. typechoSQLIte转MySQL_Typecho SQLite与MySQL的数据库切换及解决MySQL连接打开缓慢问题

    (本科水平,写得不好请不吝指点 ) Ⅰ Abstract Typecho开源轻量级博客系统拥有WordPress主题插件二次开发等一系列优点,但相比于WordPress笨重复杂的操作,Typecho赢 ...

  4. 解决MobaXtermSSH连接超时(Network error:Conection timed out )

    报错描述 Network error:Conection timed out 解决MobaXtermSSH连接超时,无法连linux IP地址的问题 使用的是MobaXterm远程连接我使用VMwar ...

  5. mysql错误连接次数过多_解决Mysql连接过多错误的方法

    问:怎样解决mysql连接过多的错误? 答:系统不能连接数据库,关键要看两个数据: 1.数据库系统允许的最大可连接数max_connections.这个参数是可以设置的.如果不设置,默认是100.最大 ...

  6. mysql连接失败10061_解决Mysql连接10061错误问题

    解决 Mysql 连接 10061 错误问题 昨天win10更新,今天用Navicat就连接不上数据库,数据库版本8.0 这种错误一般都是服务没开导致的,但是去开服务时报错: 本地计算机上的MySQL ...

  7. Druid+Oracle连接超时关闭问题

    记录一下生产环境遇到的问题 生产上的一个程序跑了一段时间后,老是出现 Closed Connection异常,往上追溯错误,发现有关闭连接失败异常 ​ 该应用环境: Oracle + Druid + ...

  8. mysql 连接超时 wait_timeout interactive_timeout 简介

    最近处理一个web服务时,写数据库数据时,经常报"MySQL server has gone away",一查发现是我mysql的wait_timeout.interactive_ ...

  9. finalshell连接超时怎么解决_vncviewer连接超时,vncviewer连接超时怎么解决

    简单来说,vnc就是一个远程操作,这个远程操作可适用于Linux和windows两个操作系统.vnc viewer是一款远程控制的软件,一般用于远程解决电脑故障或软件调试.一般来说,当vncviewe ...

最新文章

  1. linux输出指定数量脉冲,ESM335x Linux输出脉冲计数
  2. python学费多少-Python开发学费一般多少钱
  3. 本周测试服务器角色转移系统仅开放转入,5月24日维护公告 角色转移系统全服放出...
  4. 14_Android中Service的使用,关于广播接收者的说明
  5. -bash: 未预期的符号 `(' 附近有语法错误
  6. 如何在宝塔面板启用 ASP.NET CORE 网站并自动申请 HTTPS 证书
  7. ESLint is disabled since its execution has not been approved or denied yet
  8. 你是程序员?你会修电脑么!!!
  9. table样式设置小结
  10. Windowed reading and writing
  11. 专科毕业五年,曲线救国进腾讯
  12. 【物联网】思科借助物联网推进工业解决方案全数字化进程
  13. 24点问题(增加数据)·回溯
  14. 计算机毕业生城市分布情况,2018年中国各省份高考生数量、高校毕业生就业流入集中区及各省份毕业生数量分布情况分析【图】...
  15. html制作满天星,干花满天星如何制作
  16. 狐妖小红娘手游服务器维护,狐妖小红娘手游日常任务速刷攻略
  17. 关于xftp突然无法连接虚拟机
  18. ATMEGA8(数码管时钟)
  19. 大数据分析的几个极佳用例
  20. 2022年12月最新python学习基础教程01

热门文章

  1. Centos7上安装rabbitmq和使用
  2. LeetCode-笔记-523. 连续的子数组和
  3. 一步步带你详解JVM性能调优
  4. mysql游标示例mysql游标简易教程
  5. 指针 与 swift 中的引用
  6. html 标签开发,前端开发入门之HTML基础标签一
  7. Docker学习(3)——安装部署过程及简单应用
  8. ubuntu下mysql中文乱码_Ubuntu的MySQL中文乱码问题--自己躺坑
  9. oracle11g与weblogic兼容,WebLogic 10.3.6与JDK 1.7的兼容问题
  10. android电视视频app下载,央视频APP智能电视版下载-央视频电视版客户端 1.9.0.53139 安卓版-玩友游戏网...