我正在寻找大型自定义 PHP CMS 网站上运行缓慢的页面。
我不想在现有的没有文档记录的代码中挖掘,并发现 apache 访问日志可以显示处理请求所需的时间(以秒和毫秒为单位)。
会议:
CustomLog /var/log/httpd/timed_access_log timed
LogFormat "%h %l %u %t \"%r\" %>s %b - %T/%D" timed
输出:
86.132.***.*** - - [22/Jun/2010:13:25:31 +0100] "GET /menu/topscript/ HTTP/1.1" 200 183 - 0/12418
86.132.***.*** - - [22/Jun/2010:13:25:31 +0100] "GET /search/script/ HTTP/1.1" 200 266 - 0/13173
86.132.***.*** - - [22/Jun/2010:13:25:31 +0100] "GET /subscribe/script/ HTTP/1.1" 200 279 - 0/12882
有没有简单的方法来找到最慢的平均请求?
对 awstats 或 awk 脚本等分析程序感兴趣(我从来没能理解)。
我的最终解决方案是基于 radius 的答案:
awk '{cnt[$7]+=substr($12,1+match($12,"/")); i[$7]+=1}END{for (x in cnt){if (i[x] > 5) print x,i[x],cnt[x]/i[x]}}' timed_access_log | sort -k3nr | head -20
仅计算至少有 5 个请求的请求,按平均时间降序排序并返回前 20 名。
答案1
你可以试试这个,我希望它有效,如果你给我们一些示例日志文件我可以检查它是否有效
awk '{cnt[$7]+=substr($12,1+match($12,"/")); i[$7]+=1}END{for (x in cnt){print x,cnt[x]/i[x]}}' access_log