LAMP 系統(tǒng)性能調(diào)優(yōu)之度量性能
圖-LAMP
LAMP的度量性能
持續(xù)地對性能進(jìn)行度量在兩個(gè)方面有幫助。首先,度量可以幫助了解性能趨勢,包括好壞兩方面的趨勢。作為一個(gè)簡單的方法,查看一下 Web 服務(wù)器上的中央處理單元(CPU)使用率,就可以了解 CPU 是否負(fù)載過重。同樣,查看過去使用的總帶寬并推斷未來的變化,可以幫助判斷什么時(shí)候需要進(jìn)行網(wǎng)絡(luò)升級(jí)。這些度量***與其他度量和觀測結(jié)合考慮。例如,當(dāng)用戶抱怨應(yīng)用程序太慢時(shí),可以檢查磁盤操作是否達(dá)到了***容量。
性能度量的第二個(gè)用途是,判斷調(diào)優(yōu)是對系統(tǒng)性能有幫助,還是使它更糟糕了。方法是比較修改之前和之后的度量結(jié)果。但是,為了進(jìn)行有效的比較,每次應(yīng)該只修改一個(gè)設(shè)置,然后對適當(dāng)?shù)闹笜?biāo)進(jìn)行比較以判斷修改的效果。每次只修改一個(gè)設(shè)置的原因應(yīng)該是很明顯的:同時(shí)做出的兩個(gè)修改很可能會(huì)相互影響。選擇用來進(jìn)行比較的指標(biāo)比較微妙。
選擇的指標(biāo)必須能夠反映應(yīng)用程序用戶感覺到的響應(yīng)。如果一項(xiàng)修改的目標(biāo)是減少數(shù)據(jù)庫的內(nèi)存占用量,那么取消各種緩沖區(qū)肯定會(huì)有幫助,但是這會(huì)犧牲查詢速度和應(yīng)用程序性能。所以,應(yīng)該選擇應(yīng)用程序響應(yīng)時(shí)間這樣的指標(biāo),這會(huì)使調(diào)優(yōu)向著正確的方向發(fā)展,而不僅僅是針對數(shù)據(jù)庫內(nèi)存使用量。
可以以許多方式度量應(yīng)用程序響應(yīng)時(shí)間。最簡單的方法可能是使用 curl 命令,見清單 1。
清單 1. 使用 cURL 度量 Web 站點(diǎn)的響應(yīng)時(shí)間
$ curl -o /dev/null -s -w %{time_connect}:%{time_starttransfer}:%{time_total}\
http://www.canada.com
0.081:0.272:0.779
清單 1 給出對一個(gè)流行的新聞?wù)军c(diǎn)執(zhí)行 curl 命令的情況。輸出通常是 HTML 代碼,通過 -o 參數(shù)發(fā)送到 /dev/null。-s 參數(shù)去掉所有狀態(tài)信息。-w 參數(shù)讓 curl 寫出表 1 列出的計(jì)時(shí)器的狀態(tài)信息:
表 1. curl 使用的計(jì)時(shí)器
計(jì)時(shí)器描述
time_connect建立到服務(wù)器的 TCP 連接所用的時(shí)間
time_starttransfer在發(fā)出請求之后,Web 服務(wù)器返回?cái)?shù)據(jù)的***個(gè)字節(jié)所用的時(shí)間
time_total完成請求所用的時(shí)間
這些計(jì)時(shí)器都相對于事務(wù)的起始時(shí)間,甚至要先于 Domain Name Service(DNS)查詢。因此,在發(fā)出請求之后,Web 服務(wù)器處理請求并開始發(fā)回?cái)?shù)據(jù)所用的時(shí)間是 0.272 - 0.081 = 0.191 秒。客戶機(jī)從服務(wù)器下載數(shù)據(jù)所用的時(shí)間是 0.779 - 0.272 = 0.507 秒。
通過觀察 curl 數(shù)據(jù)及其隨時(shí)間變化的趨勢,可以很好地了解站點(diǎn)對用戶的響應(yīng)性。
當(dāng)然,Web 站點(diǎn)不僅僅由頁面組成。它還有圖像、JavaScript 代碼、CSS 和 cookie 要處理。curl 很適合了解單一元素的響應(yīng)時(shí)間,但是有時(shí)候需要了解整個(gè)頁面的裝載速度。
用于 Firefox 瀏覽器的 Tamper Data 擴(kuò)展(參見 參考資料 一節(jié)中的鏈接)可以在日志中記錄 Web 瀏覽器發(fā)出的每個(gè)請求,并顯示每個(gè)請求所用的下載時(shí)間。使用這個(gè)擴(kuò)展的方法是,選擇 Tools > Tamper Data 來打開 Ongoing requests 窗口。裝載要考察的頁面,然后就會(huì)看到瀏覽器發(fā)出的每個(gè)請求的狀態(tài)和裝載每個(gè)元素所用的時(shí)間。圖 1 給出裝載 developerWorks 主頁的結(jié)果。
圖 1. 用于裝載 developerWorks 主頁的請求細(xì)目

每一行描述一個(gè)元素的裝載情況。顯示的數(shù)據(jù)包括發(fā)出請求的時(shí)間、裝載所用的時(shí)間、大小和結(jié)果。Duration 欄列出裝載元素本身所用的時(shí)間,Total Duration 欄列出所有子元素所用的時(shí)間。在圖 1 中,裝載主要頁面所用的時(shí)間是 516 毫秒(ms),但是裝載所有東西并顯示整個(gè)頁面所用的時(shí)間是 5101 ms。
#p#
Tamper Data 擴(kuò)展有一種有用的模式,將頁面裝載數(shù)據(jù)的輸出繪制成圖形。右擊 Ongoing requests 窗口上半部分的任何地方,并選擇 Graph all。圖 2 顯示圖 1 中數(shù)據(jù)的圖形化視圖。
圖 2. 用于裝載 developerWorks 主頁的請求的圖形化視圖

在圖 2 中,每個(gè)請求的持續(xù)時(shí)間顯示為深藍(lán)色,并相對于頁面裝載的啟始時(shí)間顯示。所以,可以看出哪些請求使整個(gè)頁面的裝載變慢了。
通過文章的描述和圖片的有力說明,我們清楚的知道了LAMP 系統(tǒng)性能調(diào)優(yōu)的第二步:度量性能
【編輯推薦】
- LAMP 系統(tǒng)性能調(diào)優(yōu)之理解 LAMP 架構(gòu)
- LAMP網(wǎng)站架構(gòu)方案解剖
- LAMP系統(tǒng)優(yōu)化
- LAMP的平臺(tái)組成
- lamp的起源
- lamp 簡單介紹 (圖)