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

Mat*_*att 11 apache

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

bra*_*dym 21

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

例如:

LogFormat "%h %l %u %t \"%r\" %>s %b %D" common-time
Run Code Online (Sandbox Code Playgroud)

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

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

CustomLog logs/access_log_time common-time
Run Code Online (Sandbox Code Playgroud)

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

LogFormat "\"%r\" %D" measure-time
Run Code Online (Sandbox Code Playgroud)

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

CustomLog logs/access_log common
CustomLog logs/access_log_time measure-time
Run Code Online (Sandbox Code Playgroud)

所有这一切,都有一个巨大的警告.这将仅测量服务器为页面提供服务所花费的时间.它包括在浏览器中执行任何javascript所需的时间.如果你需要测量javascript执行时间,你需要使用像firebug这样的工具.

获得日志后,您可以使用apachelog之类的东西来解析日志文件,以便只获取比您想要使用的阈值更长的请求.

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

  • 有没有办法说,如果测量时间> 1秒,只记录? (6认同)