有没有一种方法可以找出哪些PHP页面在linux服务器中占用了更多的资源


Is there a way to find out which PHP pages are taking more resources in a linux server?

我的linux服务器网站一次又一次地关闭,但SSH、FTP等仍然存在。所以我通过SSH查看了服务器,并使用了列出所有进程的top命令。它表明,当一些PHP页面被执行时,mysql的CPU使用率达到100%。那么,有没有任何命令/日志可以用来找出哪些PHP页面占用了mysql的大量使用?非常感谢。

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

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

资源消耗有多个方面。

正如mobius提到的,您可以在MySQL中使用SHOW FULL PROCESSLIST来查看当前正在运行的内容。查看处理的时间比您预期的要长,并检查查询以查找有关它在应用程序中的来源的提示。

问题可能与应用程序无关。这可能只是一个调优MySQL的问题,它在大多数情况下都是添加或更改索引。EXPLAIN命令将帮助您分析MySQL决定使用的执行计划。阅读解释需要一些练习。我有最好的参考是高性能MySQL。

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

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

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

如果MySQL被困在100%,那么您的一个PHP应用程序中可能有一些调整不好的MySQL查询。这个时间将在MySQL守护进程中计时,因此不会显示在%D值中。这可能是索引过期。

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

不幸的是,修复此问题可能需要深入了解应用程序内部。

mytop-http://jeremy.zawodny.com/mysql/mytop/(在mySQL上显示完整的PROCESSLIST)Xdebug探查器-http://xdebug.org/docs/profiler