【发布时间】:2014-01-14 18:01:20
【问题描述】:
我最近在这种情况下没有改变任何东西,但最近我到远程服务器的 mysqli_connect() 非常慢(大约一半的时间达到了 30 秒的最大执行时间)。当它工作时,响应时间在 28 到 30 秒之间。
我已经在两台服务器上重新启动了 MySQL。保存 PHP 脚本的服务器是本地 WAMP 服务器,远程服务器是 LAMP 堆栈。 LAMP 服务器可以很好地提供与 WAMP 服务器请求的信息相同的信息。查询似乎不是问题,而是 mysqli_connect() 似乎是问题:
$mtime = microtime();
$mtime = explode(" ",$mtime);
$starttime = $mtime[1] + $mtime[0];
$this->conn = mysqli_connect($this->host,$this->user,$this->password) or die(mysqli_error($this->conn));
$etime = microtime();
$etime = explode(" ",$etime);
$endtime = $etime[1] + $etime[0];
$totaltime = ($endtime - $starttime);
echo('<!--mysqli_connect took: '.$totaltime.' seconds-->');
页面(当它没有为达到 max_execution_time 给出 500 响应时)将显示:
<!--mysqli_connect took: 28.975151777267 seconds-->
远程 LAMP 服务器上会显示相同的代码:
<!--mysqli_connect took: 0.036190032958984 seconds-->
自从它工作以来,我没有更新此代码或进行任何配置更改。除了在 WAMP 服务器上超过 30 秒时超出 max_execution_time 错误之外,我在任何一台服务器上都没有收到任何错误。有没有人有什么建议?
感谢阅读。
【问题讨论】:
-
您的服务器上是否有足够的可用连接来满足您的连接需求?还是可能有一些长时间运行的查询导致查询/连接堆积?
-
重启 10 分钟后:
max_connections设置为 151,pma 显示max. concurrent connections为 6,threads_connected为 3,threads_created为 23。没有记录慢查询。即使在重新启动后,我的 mysqli_connect 仍然需要 >30 秒。 -
mysqltuner 显示可用连接的最高使用率:5% (9/151)
标签: php mysql mysqli mysql-connect