有没有办法让Apache记录缓慢的请求?

时间:2010-10-07 04:33:49

标签: apache

如果一个页面需要花费几秒钟来处理,我希望Apache能够在某个地方记录该URL。这可能吗?我有很多网站,所以我一直在寻找一种自动方式,而不是每个网站的专有代码。

1 个答案:

答案 0 :(得分:21)

看看http://httpd.apache.org/docs/2.2/mod/mod_log_config.html。您可以设置自定义日志,其中包括提供请求所用的时间。

例如:

LogFormat "%h %l %u %t \"%r\" %>s %b %D" common-time

将服务请求所用的时间(以微秒为单位)添加为日志文件的最后一个字段。

您可以将该行添加到httpd.conf,然后在每个要使用它的虚拟主机中添加以下行:

CustomLog logs/access_log_time common-time

您还可以创建一个新的LogFormat,它只包含您想要的内容,可能是这样的:

LogFormat "\"%r\" %D" measure-time

在虚拟主机中,您可以拥有多个日志,因此您可以拥有:

CustomLog logs/access_log common
CustomLog logs/access_log_time measure-time

所有这一切,都有一个巨大的警告。这将仅测量服务器为页面提供服务所花费的时间。 不会包含在浏览器中执行任何javascript所需的时间。如果您需要衡量javascript执行时间,则需要使用firebug等工具。

获得日志之后,您可以使用类似apachelog的内容来解析日志文件,以便只获取超过您想要使用的阈值的请求。

我不确定是否可以仅记录长请求并通过解析步骤。它可能是,但我觉得它需要大量的工作。