有没有办法找出哪些PHP页面在Linux服务器中占用更多资源?

时间:2012-01-10 17:48:32

标签: php linux apache

我的linux服务器网站一次又一次地停止运行但是SSH,FTP等还活着。所以我通过SSH查看了服务器,并使用了top命令列出了所有进程。它表明,当执行某些PHP页面时,mysql的CPU使用率达到100%。那么有没有任何命令/日志可以用来找出哪些PHP页面占用了大量的mysql用法?谢谢......

4 个答案:

答案 0 :(得分:1)

您可能需要查看Apache日志格式,看它是否包含%D参数,因为这表示以微秒为单位提供请求所需的时间。

如果排除除PHP脚本请求之外的任何内容,您应该知道哪些脚本花费的时间最长,这表明执行时间很长。显然,这也可能意味着一个非常大的响应有效载荷...

答案 1 :(得分:1)

资源消耗有多个方面。

正如mobius所提到的,您可以在MySQL中使用SHOW FULL PROCESSLIST来查看当前正在运行的内容。查看处理时间超过预期,查看查询以查找有关应用程序源自何处的提示。

问题可能与应用程序无关。它可能只是调整MySQL的问题,这将是关于在大多数时间添加或更改索引的问题。 EXPLAIN是一个命令,可以帮助您分析MySQL决定使用的执行计划。阅读EXPLAIN需要一些练习。我最好的参考是High Performance MySQL

您还可以使用MySQL慢查询日志来获取有关当您不在服务器前时发生的慢查询的信息。

如果MySQL以100%运行,您可能会从那里发现问题。如果您真的想跟踪PHP的使用情况,可以设置XHProf,这是Facebook创建的高性能分析器,可以在生产站点上运行。您可以将其设置为从100个样本中抽取一个请求,并更全面地了解您网站的效果。有一些文章解释了如何设置它。

最后,可以在开发中使用XDebug和KCacheGrind来一次分析一个请求。

答案 2 :(得分:0)

mytop - http://jeremy.zawodny.com/mysql/mytop/(在mySQL上显示完整的进程列表) Xdebug Profiler - http://xdebug.org/docs/profiler

答案 3 :(得分:0)

如果MySQL陷入100%的困境,那么你可能在你的一个PHP应用程序中得到了一些调整错误的MySQL查询。这一次将在MySQL守护进程中计时,因此不会显示在%D值中。这可能是过时的索引。

如果您可以通过SSH在命令提示符下访问D / B,那么您可以尝试在任何大型表上执行ANALYZE TABLE和OPTIMIZE TABLE。另请参阅"慢查询日志"在MySQL文档中。

不幸的是,修复此问题可能需要您进入Application内部。