2012-07-20 81 views
2

这是我的顶部输出:PHP和MySQL:找出哪个文件或查询导致重CPU负荷

6747 example.com 15 0241米19米8188ř29.9 [CPU]0.2 [RAM ] 3:24.89 PHP

31798的MySQL 15 01952米422米5384小号12.0 [CPU]5.3 [RAM] 9:00.27 的mysqld

看看PHP的CPU使用情况。我不知道哪个文件导致此负载。是否有任何模块显示哪个文件在树下使用CPU?我的意思是这样的:

6747 example.com 15 0241米19米8188ř29.9 [CPU] 0.2 [RAM] 3:24.89 PHP

     5.49%       index.php 
        15.39%       videos.php 
         x%        y.php 

31798的MySQL 15 01952米422米5384小号12.0 [ CPU] 5.3 [RAM] 9:00.27 mysqld

我也想为mysql做同样的事情。我想现在正在执行哪个查询,需要多长时间。

回答

3

最简单的选项(不是说最准确的,但最简单的)将是:

  • 对于PHP,如果你想进行比较的另外一个PHP文件,认为该花的时间最长的过程正在使用大多数CPU。使用网络分析器(内置于Chrome和IE或Firebug)来确定哪个进程花费的时间最长。如果没有,用户提琴手(Windows)或查尔斯(Mac)。删除数据响应时间并平均剩余时间=生成响应的时间= CPU使用率。请注意,这将包括外部调用,memcached调用,mySQL调用等。

  • 对于mySQL,慢速查询日志是非常宝贵的。 (需要在my.cnf中配置并重新启动服务器 - 但它应该被认为是强制性的。)

  • 对于更多诊断,Xdebug(如Xesued所建议的)将帮助您分析脚本的各个部分(以及作为调试)。不过,不建议用于生产,因为它会进一步放慢你的速度。

  • 另一种粗糙的方法是“回显microtime(true);”在脚本的各个位置,或者将该信息输出到日志文件。 (在脚本开始时打开日志文件,并在各个点记录microtime - 寻找大间隙。)

+0

我使用REQUEST_URI记录了执行时间。然后我通过文件名找到问题。 – xecute 2012-07-21 12:19:43

1

我不知道如何在运行时确定PHP脚本加载。 (不知道它是否可能)。但是,使用Xdebug的分析器可以帮助您确定脚本的速度缓慢。

Xdebug Profiler

它是一种伟大的工具,将帮助您捕捉90 +%的速度变慢的。

至于MySQL的:这是一个相关的问题:how-to-analyze-query-cpu-time

+0

我会尽量尝试Xdebug Profiler。谢谢! – xecute 2012-07-21 12:20:15

0

我不觉得有什么,可直接,但假设每个这些脚本的运行作为一个单独的进程(像单独呼吁CLI ),您可以使用getmypid()然后将其与您的CPU负载日志相关联。