天天看點

Apache日志中的處理時間

Apache的日志有很多可以自己定義的項目,其中一個 %T 能夠顯示出伺服器處理請求所用的時間。我就是對這個的定義發生了疑問,是以做了一些考證。

在Apache2的中文手冊中,是這樣定義 %T 這個變量的。

%T   處理完請求所花時間,以秒為機關。

在Apache2的英文文檔中,定義如下:

%T   the time taken to server the request, in seconds.

由此可見,這個時間表示的是伺服器處理這個請求的總時間。 而不是Apache伺服器解析PHP腳本,并且輸出腳本的時間。是以,我們可以看到同樣的一個頁面,網速比較慢的使用者通路時間會長,而網速較快的使用者通路,則時間比較短。

%T記錄的是以秒為機關的時間,這對于我們來說是不太夠的。因為很多情況下,我們需要保證我們網頁的響應速度在1秒以内。從Apache 2.0 開始,提供了一個新的參數 %D。可以記錄伺服器處理請求的微秒時間(注意和%T的定義不同)。

我在伺服器上做了一次測試,代碼中嵌入了一個執行時間的檢查判斷,同時監視日志檔案中産生的時間。結果為:頁面監測腳本執行時間為10009206毫秒,而日志中記錄的是10009838,兩者時間并不一樣,日志中記錄的時間稍微長一些,包含了DNS查詢等一系列的過程。

PS:由這個問題也可以衍生出一個如何測算用戶端網速的問題。有這樣一個辦法,在Header中輸出伺服器的響應時間,使用者收到後,判斷收到的時間,這個時間差就是在伺服器和用戶端之間所消耗的時間。

參考資料: