如何在 Apache 中记录请求处理时间?
作者:卡卷网发布时间:2024-09-09 21:49浏览数量:277次评论数量:0次
如果你有一个 apache (2) web 服务器,你可能有一个 access.log 文件,它使用 “combined” 日志格式向你显示各种数据。让我们看看如何将处理时间包含到该日志文件中。
默认情况下,组合日志中的一行如下所示:
"GET /info-tech/ HTTP/1.1" 200 46482 "http://fplanque.com/info-tech/" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5"
请注意 IP 后面的 2 个短划线 - -。第一个选项表示“I could not identify the user using ident”,第二个选项表示“未执行用户身份验证”。
现在,让我们面对现实吧:你永远不会使用 ident 识别任何人。你的 apache conf 甚至可能不会尝试。那块田地是远古遗留下来的。因此,让我们用有用的东西替换第一个破折号,即:请求的处理时间!请注意,通过这样做,我们可以保持文件的全局结构相同,并且您可能正在使用的任何日志处理工具都不会受到影响。
因此,在您的 apache2.conf 文件中,查找以下行:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
并将其替换为:
LogFormat "%h %D %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
(更具体地说,我们将第二个字段从 %l 更改为 %D)
现在,重新启动 apache 并查看您的日志!您的日志行现在应如下所示:
"GET /info-tech/ HTTP/1.1" 200 46482 "http://fplanque.com/info-tech/" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5"
96395 是以微秒为单位的时间。换句话说,处理请求需要 96 毫秒。请注意,根据 Apache 的 Send Buffer 是否填满,这可能包括将数据发送回请求方所需的时间,因此这在很大程度上取决于请求方的位置、缓冲区大小、使用的路由、MTU 大小、TCP 窗口大小等......
如果您通过不同的代理请求相同的 URL 并查看日志,则可能会看到重大变化。
快速提示:执行此操作时过滤日志的一种方法:
tail -f /some_path/access.log | grep "GET /info-tech/ HTTP"
免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。
相关推荐

你 发表评论:
欢迎