李靜 付天婧 李瑞蓮
摘 要:網(wǎng)站性能是客觀的指標,可以具體體現(xiàn)到時間、吞吐量等技術(shù)指標,同時也是主管感受,而感受則是一種與具體參與者相關(guān)的微妙的東西,用戶的感受和工程師的感受不同,不同的用戶感受也不同。
關(guān)鍵詞:性能;性能測試;優(yōu)化;熱詞分析
引言
性能是網(wǎng)站的一個重要指標,是網(wǎng)站架構(gòu)設(shè)計的一個重要方面,又因為性能問題幾乎無處不在,所以優(yōu)化網(wǎng)站性能的手段也非常多,從用戶瀏覽器到數(shù)據(jù)庫,影響用戶所有請求的所有環(huán)節(jié)都可以進行性能優(yōu)化。下面我將結(jié)合最近的大數(shù)據(jù)作業(yè)--信息化領(lǐng)域熱詞分析網(wǎng)站的性能測試及優(yōu)化方式。
1 網(wǎng)站性能測試
性能測試是性能優(yōu)化的前提和基礎(chǔ),也是性能優(yōu)化結(jié)果的檢查和度量,不同視角下的網(wǎng)站性能有不同的標準,也有不同的優(yōu)化手段。
1.1不同視角下的網(wǎng)站性能
1.1.1用戶視角的網(wǎng)站性能
從用戶角度,網(wǎng)站性能就是用戶在瀏覽器上直觀感受到網(wǎng)站響應(yīng)速度是快還是慢,如圖1.1
在實踐中,使用一些前端架構(gòu)優(yōu)化時段,通過優(yōu)化頁面HTML樣式、利用瀏覽器端的并發(fā)和異步特性、調(diào)整瀏覽器緩存策略、使用 CDN 服務(wù)、反向代理等手段,使瀏覽器盡快地顯示用戶感興趣的內(nèi)容、盡可能近地獲取頁面內(nèi)容,即使不優(yōu)化應(yīng)用程序和架構(gòu),也可以很大程度地改善用戶視角下的網(wǎng)站性能。
1.1.2 開發(fā)人員視角的網(wǎng)站性能
開發(fā)人員關(guān)注的主要是應(yīng)用程序本身及其相關(guān)子系統(tǒng)的性能,包括:
a)響應(yīng)延遲 ———— 優(yōu)化手段:使用緩存加速數(shù)據(jù)讀取;
b)系統(tǒng)吞吐量 ———— 優(yōu)化手段:使用集群提高吞吐能力;
c)并發(fā)處理能力 ———— 優(yōu)化手段:使用異步消息加快請求響應(yīng)以及實現(xiàn)削峰;
d)系統(tǒng)穩(wěn)定性 ———— 優(yōu)化手段:使用代碼優(yōu)化手段改善程序性能等技術(shù)指標。
1.1.3 運維人員視角的網(wǎng)站性能
運維人員更關(guān)注基礎(chǔ)設(shè)施性能和資源利用率,如網(wǎng)絡(luò)運營商的帶寬能力、服務(wù)器硬件的配置、數(shù)據(jù)中心網(wǎng)絡(luò)架構(gòu)、服務(wù)器和網(wǎng)絡(luò)帶寬的資源利用率等。主要的優(yōu)化手段有建設(shè)優(yōu)化骨干網(wǎng)、使用高性價比定制服務(wù)器、利用虛擬化技術(shù)優(yōu)化資源利用等。
1.2性能測試方法
性能測試是一個總體,具體可細分為性能測試、負載測試、壓力測試以及穩(wěn)定測試。在不同生成環(huán)境、不同時間的請求壓力是不均勻的,呈波浪特性,因此為了更好地模擬生產(chǎn)環(huán)境,穩(wěn)定性測試也應(yīng)不均勻地對系統(tǒng)施加壓力。一般來說,性能測試遵循如下圖所示拋物線規(guī)律:
在開始階段,隨著并發(fā)請求數(shù)目的增加,系統(tǒng)使用較少的資源就達到較好的處理能力(a~b段),這一段是網(wǎng)站的日常運行區(qū)間,網(wǎng)站的絕大部分訪問負載壓力都集中在一段區(qū)間,被稱作「性能測試」,測試目標是評估系統(tǒng)性能是否符合需求以及設(shè)計目標;隨著壓力的持續(xù)增加,系統(tǒng)處理能力增加變緩,直到達到一個最大值(c點),這是系統(tǒng)的最大負載點,這一段被稱作「負載測試」。超過這個點后,再增加壓力,系統(tǒng)的處理能力反而下降,而資源消耗卻更多,直到資源消耗達到極限(d點),這個點可以看作是系統(tǒng)的崩潰點,超過這個點繼續(xù)加大并發(fā)請求數(shù)目,系統(tǒng)不能再處理任何請求,這一段被稱作「壓力測試」,測試目標是評估可能導(dǎo)致系統(tǒng)崩潰的最大訪問負載壓力。與性能曲線相對應(yīng)的是用戶訪問的等待時間(系統(tǒng)響應(yīng)時間):
2 Web前端性能優(yōu)化
一般說來,web前端指網(wǎng)站業(yè)務(wù)邏輯之前的部分,包括瀏覽器加載、網(wǎng)站視圖模型、圖片服務(wù)、CDN服務(wù)等,主要優(yōu)化手段有瀏覽器訪問、使用反向代理才、CDN等。
2.1 瀏覽器訪問優(yōu)化
a)減少http請求次數(shù):CSS Sprites,JS、CSS源碼壓縮、圖片大小控制合適;網(wǎng)頁Gzip,CDN托管,data緩存,圖片服務(wù)器。
b)前端模板 JS+數(shù)據(jù),減少由于HTML標簽導(dǎo)致的帶寬浪費,前端用變量保存AJAX請求結(jié)果,每次操作本地變量,不用請求,減少請求次數(shù),如下圖以最簡潔的方式呈現(xiàn)數(shù)據(jù)結(jié)果:
c)圖片預(yù)加載,將樣式表放在頂部,將腳本放在底部 加上時間戳。(時間戳(timestamp),通常是一個字符序列,唯一地標識某一刻的時間。數(shù)字時間戳技術(shù)是數(shù)字簽名技術(shù)一種變種的應(yīng)用。)
2.2 CDN加速
CDN(contentdistribute network,內(nèi)容分發(fā)網(wǎng)絡(luò))的本質(zhì)仍然是一個緩存,而且將數(shù)據(jù)緩存在離用戶最近的地方,使用戶以最快速度獲取數(shù)據(jù),即所謂網(wǎng)絡(luò)訪問第一跳,由于CDN部署在網(wǎng)絡(luò)運營商的機房,這些運營商又是終端用戶的網(wǎng)絡(luò)服務(wù)提供商,因此用戶請求路由的第一跳就到達了CDN服務(wù)器,當CDN中存在瀏覽器請求的資源時,從CDN直接返回給瀏覽器,最短路徑返回響應(yīng),加快用戶訪問速度,減少數(shù)據(jù)中心負載壓力。
2.3 反向代理
反向代理服務(wù)器位于網(wǎng)站機房一側(cè),代理網(wǎng)站web服務(wù)器接收http請求。論壇網(wǎng)站,把熱門詞條、帖子、博客緩存在反向代理服務(wù)器上加速用戶訪問速度,當這些動態(tài)內(nèi)容有變化時,通過內(nèi)部通知機制通知反向代理緩存失效,反向代理會重新加載最新的動態(tài)內(nèi)容再次緩存起來。此外,反向代理也可以實現(xiàn)負載均衡的功能,而通過負載均衡構(gòu)建的應(yīng)用集群可以提高系統(tǒng)總體處理能力,進而改善網(wǎng)站高并發(fā)情況下的性能。
3 總結(jié)
在軟件工程發(fā)展史的大部分時間,性能一直是促使系統(tǒng)架構(gòu)發(fā)展的重要驅(qū)動力。同樣,它也京城影響所有其他質(zhì)量屬性的實現(xiàn)。而優(yōu)化原則不是絕對的,對于不同的場景應(yīng)該考慮不同的側(cè)重點,別人的解決方案對于你來說不一定是最優(yōu)的,應(yīng)該針對自己的網(wǎng)站規(guī)模和類型進行適度的優(yōu)化,不能盲目追求標準和最佳實踐.
參考文獻
[1]軟件架構(gòu)實踐 第二版 【美】巴斯,【美】克萊門茨,【美】凱茲曼。
[2]李智慧,大型網(wǎng)站技術(shù)架構(gòu)_核心原理與案例分析。