awk 分析web日誌(頁面執行時間)

來源:互聯網
上載者:User

標籤:

shell指令碼分析 nginx日誌訪問次數最多及最耗時的頁面(慢查詢)當伺服器壓力比較大,跑起來很費力時候。我們經常做網站頁面最佳化,會去尋找那些頁面訪問次數比較多,而且比較費時。 找到那些訪問次數高,並且比較耗時的地址,就行相關最佳化,會取得立竿見影的效果的。 下面是我在做最佳化時候,經常用到的一段shell 指令碼。 這個也可以算是,統計web頁面的slowpage 慢訪問頁面,象mysql slowquery 。 以下是我的:nginx 配製 

log_format main ‘$remote_addr - $remote_user [$time_local] $request ‘
‘"$status" $body_bytes_sent "$http_referer" ‘
‘"$http_user_agent" "$http_x_forwarded_for" $request_time‘;
access_log /var/log/nginx/access.log main buffer=32k;

  從上面配置,可以看到:ip在 第一列,頁面耗時是在最後一列,中間用空格分隔。 因此在awk 中,分別可以用:$1$NF 讀取到當前值。 其中NF是常量,代表整個列數。通過awk分析日誌,快捷得到執行時間 一、web記錄檔格式

222.83.181.42 - - [09/Oct/2010:04:04:03 +0800] GET /pages/international/tejia.php HTTP/1.1 "200" 15708 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Sicent; WoShiHoney.B; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)" "-" 0.037
按照空格分隔的話,最後一個欄位[0.037] 是頁面執行時間,第7個欄位 是頁面訪問地址。

 二、執行代碼 

awk ‘BEGIN{
print "Enter log file:";
getline logs;
#logs="/var/log/nginx/access.log-20101008";
OFMT="%.3f";
while(getline < logs)
{
split($7,atmp,"?");
aListNum[atmp[1]]+=1;
aListTime[atmp[1]]+=$NF;
ilen++;
}
close(logs);
print "\r\ntotal:",ilen,"\r\n======================================\r\n";
for(k in aListNum)
{
print k,aListNum[k],aListTime[k]/aListNum[k] | "sort -r -n -k3";
}
}‘

     結果:效能:422780條日誌,統計完成速度是:5秒左右。

awk 分析web日誌(頁面執行時間)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.