如何从 Apache 中找出导致加载时间过长的页面?

6 linux apache-http-server php

如何找出在 Apache 中加载时间最长的 PHP 脚本?

小智 7

有几种方法可以做到这一点。

1:在您的网络服务器上启用mod_status。这使您可以通过浏览到 /server-status/ 来大致了解 apache 服务器的一般行为。请记住限制对该位置的访问:

ExtendedStatus on
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from 192.168.0.0/24
</Location>
Run Code Online (Sandbox Code Playgroud)

2:修改您的LogFormat指令以添加处理时间。然后,您可以将 URI 与响应时间相关联:

LogFormat "%h %t \"%r\" %b sec:%T usec:%D"      
Run Code Online (Sandbox Code Playgroud)

这将显示远程 ip、请求日期时间、请求、发送的字节数、秒和微秒。

3:对于脚本内存大小和脚本命中率,Xcache自带的管理控制台非常好。具有大类层次结构的脚本可以在内存中扩展到许多 meg。

4:分析您的 php 脚本可能会有所帮助。如果您想专注于分析单个脚本,Xdebug肯定会有所帮助。用户 Damien 提出了一种方法。我建议记录您的内存使用情况并使用 microtime,但为登录设置一个阈值,如下所示:

$THRESH = 2;

$profile = array();
$profile['start'] = microtime( true );
// stuff
$profile['end'] = microtime( true );
$profile['delta'] = $profile['end'] - $profile['start'];

if( $profile['delta'] >= $THRESH ) 
    error_log( __FILE__.": ".$profile['delta']." seconds " );
Run Code Online (Sandbox Code Playgroud)

调整阈值可以使您的日志更清晰。


小智 0

使用Apache JMeter运行它们。

Apache JMeter 可用于测试静态和动态资源(文件、Servlet、Perl 脚本、Java 对象、数据库和查询、FTP 服务器等)的性能。它可以用来模拟服务器、网络或对象上的重负载,以测试其强度或分析不同负载类型下的整体性能。您可以使用它对性能进行图形分析或测试高并发负载下的服务器/脚本/对象行为。