PHP 请求有时非常慢

PHP 请求有时非常慢

我有一个在 apache/php4 服务器上运行的 PHP/Mysql 脚本(php4 只是临时的,直到新的服务器准备就绪...),我注意到一些奇怪的行为。

使用一些 php 和一些简单的 mysql 查询的请求通常非常快。但如果我向服务器发送相同的请求 10 次(一个接一个,没有任何重负载),也许 8-9 次它会在 50ms 内完成。但有一两个请求每次将花费超过 5 秒的时间。中间没有中间值,只有 ~50ms 或几秒钟。

它看起来非常随机(不是第一个请求很慢,然后接下来的请求很快或类似的情况)而且我找不到原因。

有谁知道什么可能导致这个问题以及如何解决它?

答案1

仅从简短的描述很难准确找出服务器运行缓慢的确切原因,您需要进行一些基准测试以找出导致服务器运行缓慢的原因。例如...

  1. 这可能是 apache 的配置(最大客户端数可以设置为真的数量较少 - 但这一点值得怀疑)。尝试Apache 基准测试 (ab)

  2. 可能是 MySQL 查询构造不当导致表锁定(取决于访问的每个表的存储引擎)或 MySQL 连接限制非常低(检查

  3. 可能是因为您的 PHP 脚本非常繁重,而您的服务器没有硬件来支持这种级别的活动。

  4. 编辑:看一下穆宁它将为您提供服务器性能的全面概述,然后在您发出请求时对其进行监控。

这一切都非常主观。也许其他人可以指出其他一些潜在问题。

答案2

正如其他人指出的那样,很难确定问题所在。但是,您可以检查脚本的执行情况。如果问题对 PHP 可见,则很可能是 PHP 或数据库之间的问题。

您可以通过执行以下操作在脚本中进行一些执行检查:;

function checkpoint(){
   $mtime = microtime(); 
   $mtime = explode(" ",$mtime); 
   $mtime = $mtime[1] + $mtime[0]; 
   return $mtime;
}

function measureGaps($data){
    $size = count($data);
    for($i=0; $i < $size - 1; $i++){
      $p = $i+1;
      $gap[]= $data[$p] - $data[$i];
     }
    return $gap;
}

在每个检查点,你可以执行以下操作:

$checkpointArray[] = checkpoint();

在脚本的最后,调用另一个函数:

var_dump(measureGaps($checkpointArray));

如果您不想执行 var_dump,请将输出更改为写入文件。

相关内容