目的
找出是哪些请求长期影响了系统性能
方法
web服务器的日志会记录每个请求的响应时间,分析访问日志,对相同请求的响应时间进行累加,响应时间的和 除以 这个请求的访问次数,就得到此请求的平均访问时间
例如日志中记录了 /a.php 3次请求,响应时间分别为 1、2、3
/a.php 的平均响应时间就是 (1+2+3)/3
实现
使用awk分析日志的每一行,累加响应时间和访问次数,最后求出平均值并输出
例如日志信息为:
其中红线标出的两列是我们关心的信息,"0"那列是响应时间,"/a.php"那列是请求的url
awk按空格进行分割,所以响应时间在第6列,url在第8列
代码
通过这个awk脚本,可以计算出每个请求的平均响应时间
数组变量url 存放每个请求对应的响应时间累加值
数组变量url_times 存放每个请求的被访问次数
最后在END块中对url数组进行遍历,打印出每个请求的url及其平均响应时间
执行脚本
awk -f avgtime_script access_log
输出内容示例
/a.php = 1
/b.php = 0