MySQL server has gone away 问题分析
来源:互联网 发布:金庸群侠传 lua 源码 编辑:程序博客网 时间:2024/05/20 19:47
最近网站时不时报错:MySQL server has gone away
问题分析,mysql在创建连接之后,之后处理逻辑时间过长导致mysql连接超时,假设一个请求发起,如下执行顺序:
mysql_connect-->ok(wait_timeout = 30s)-->(insert,select,update,delete)->ok->逻辑处理(逻辑处理时间:40s,其中,无任何的insert,select,update,delete)->(insert,select,update,delete)-->catch:MySQL server has gone away;
因逻辑执行过程,(比如一些统计信息,或者一些大数据的处理信息),不能完全保证在wait_timeout设定的时间范围内执行,那么,只能检测连接状态,若连接状态已经断开,那么,再次进行连接,处理流程如下:
mysql_connect-->ok(wait_timeout = 30s)-->(insert,select,update,delete)->ok->逻辑处理(逻辑处理时间:40s,其中,无任何的insert,select,update,delete)->检测连接状态,若连接超时,关闭上一个连接句柄(mysql_close()),重新开启连接(mysql_connect->ok)->(insert,select,update,delete)-->catch:MySQL server has gone away;
PHP代码大概如下:
$connect = mysql_connect( '127.0.0.1', 'root', '123456',131072);mysql_select_db('dbname');//@todo 程序逻辑for ($i=0;$i<100000000;$i++){ //@todo}//检查服务器是否关闭了连接if (!mysql_ping($connect)) { //关闭上一个连接 mysql_close($connect); //重新进行连接 $connect = mysql_connect('127.0.0.1', 'root', '123456', 131072); //这句很重要 mysql_select_db('dbname');} $result = mysql_query("SELECT * from member",$connect); //查询while($row = mysql_fetch_array($result)){ var_dump($row);}
阅读全文
1 0
- MySQL server has gone away 问题分析
- MySQL server has gone away问题
- MySQL server has gone away 问题
- MySQL server has gone away
- MySQL server has gone away
- MySQL server has gone away
- MySQL server has gone away
- MySQL server has gone away
- MySQL server has gone away
- MySQL server has gone away
- MySQL server has gone away
- Mysql server has gone away
- MySQL server has gone away
- MySQL server has gone away
- MySQL server has gone away
- MySQL server has gone away
- MySQL server has gone away
- MySQL server has gone away
- word超出纸张打印范围
- Linux-5-系统语言
- WebStorage(1)__<本地数据,离线缓存>
- 【真题】网易有道2017内推编程题 模拟洗牌
- 业余时间决定了你的人生
- MySQL server has gone away 问题分析
- Redis在Windows上编译
- 【线段树+扫描线】HDU 1542+1255
- mobienet
- Leetcode500. Keyboard Row
- java使double保留两位小数的多方法 java保留两位小数
- Spring Data JPA使用复合主键
- AlexNet网络结构
- mysql的主从复制与读写分离