
我正在尋找大型自訂 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 腳本之類的分析程式感興趣(我一直無法理解這些程式)。
我的最終解決方案,基於半徑的答案:
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