mysql访问60s出现timeout_MySQL服务器消失了-恰好60秒

我最近发现,早先运行良好的SQL查询现在在60秒后超时并引发错误。该查询速度很慢,但是作为日常工作的一部分运行,因此它本身不是问题(因此请不要建议我对其进行优化)。

通过运行“ select SLEEP(120);”,我能够一致地重现该错误。从PHP如下所示。但是,从MySQL客户端运行相同的语句成功(返回0)。我试过调整wait_timeout(设置为28800),但是没有运气。我还重新启动了数据库服务器和计算机本身。

它总是总是在60秒后超时的事实向我表明,这很可能是一种设置,而不是有限的资源问题。

我正在运行:

Windows Server 2003

MySql 5.1.36-社区

PHP 5.3

以下是我的测试代码,SHOW VARIABLES的输出和结果

谢谢!

码:

set_error_handler("sqlErrorHandler");

set_time_limit(12000);

$link = mysql_connect("$MYSQL_Host","$MYSQL_User","$MYSQL_Pass");

mysql_select_db($MYSQL_db, $link);

echo "mysql_ping = " . (mysql_ping($link) ? "LIVE" : "DEAD") . "
";

$sql = "SELECT SLEEP(120);";

$start = microtime(true);

mysql_query($sql, $link);

echo "**query done**
";

allDone();

function allDone(){

global $start, $sql;

$end = microtime(true);

echo "sql : $sql
";

echo "elapsed : " . ($end - $start) . "
";

echo "
";

}

function sqlErrorHandler($errno, $errstr, $errfile, $errline){

global $link;

echo "Error : $errno
$errstr
";

echo "mysql_ping : " . (mysql_ping($link) ? "LIVE" : "DEAD") . "
";

echo "
";

allDone();

}

输出:

mysql_ping = LIVE

Error : 2

mysql_query() [function.mysql-query]: MySQL server has gone away

mysql_ping : DEAD

sql : SELECT SLEEP(120);

elapsed : 60.051116943359

Error : 2

mysql_query() [function.mysql-query]: Error reading result set's header

mysql_ping : DEAD

sql : SELECT SLEEP(120);

elapsed : 60.0511469841

**query done**

sql : SELECT SLEEP(120);

elapsed : 60.051155090332

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值