2

这是我的最高输出:

6747 example.com 15 0 241m 19m 8188 R 29.9[CPU] 0.2[RAM] 3:24.89 php

31798 mysql 15 0 1952m 422m 5384 S 12.0[CPU] 5.3[RAM] 9:00.27 mysqld

查看 PHP 的 CPU 使用率。我不知道是哪个文件导致了这个负载。树下是否有显示哪个文件正在使用 CPU 的模块?我的意思是这样的:

6747 example.com 15 0 241m 19m 8188 R 29.9[CPU] 0.2[RAM] 3:24.89 php

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

31798 mysql 15 0 1952m 422m 5384 S 12.0[CPU] 5.3[RAM] 9:00.27 mysqld

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

4

3 回答 3

3

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

  • 对于 PHP,如果您想将一个 PHP 文件与另一个文件进行比较,假设耗时最长的进程使用最多的 CPU。使用网络分析器(Chrome 和 IE 或 Firebug 内置)找出哪个进程耗时最长。如果做不到这一点,用户 fiddler(在 Windows 上)或 Charles(Mac)。删除数据响应时间并平均剩余的时间 = 生成响应的时间大约 = CPU 使用率。请注意,这将包括外部调用、memcached 调用、mySQL 调用等。

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

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

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

于 2012-07-20T03:44:09.780 回答
1

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

Xdebug 探查器

它是一个很棒的工具,可以帮助您捕捉 90+% 的减速。

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

于 2012-07-20T03:35:25.807 回答
0

我认为没有任何直接可用的东西,但假设每个脚本都作为一个单独的进程运行(类似于在 CLI 上单独调用的东西),您可以使用getmypid()然后将其与您的 CPU 负载日志相关联。

于 2012-07-20T03:43:12.560 回答