分析请求时间以查找缓慢的页面

分析请求时间以查找缓慢的页面

我正在寻找大型自定义 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 脚本等分析程序感兴趣(我从来没能理解)。

有关的:AWStats 和服务请求所花费的时间

我的最终解决方案是基于 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

相关内容