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