李靜 付天婧 李瑞蓮


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