熱門標簽
大規模高性能網站性能測試方法
大型高性能網站性能試驗方法性能試驗是一個總稱,可分為性能試驗負載測試、壓力試驗和穩定性試驗。
深國商網站建設以系統初步規劃的業績指標設計為預期目標,不斷向系統施壓,驗證系統能否在資源可接受范圍內達到預期業績。
負載測試不斷增加對系統的并發請求,以增加系統壓力,直到系統的一個或多個性能指標達到安全臨界值。如果一個資源已經飽和,那么繼續對系統施加壓力,系統的處理能力不會提高,反而會下降。
壓力測試
當超過安全負荷時,系統將繼續施加壓力,直到系統崩潰或無法再處理任何請求,從而獲得系統的**大承壓能力。
穩定性試驗
在特定的硬件、軟件和網絡環境條件下,被測系統對系統施加一定的業務壓力,使系統長時間運行,以檢測系統是否穩定。為了更好地模擬生產環境,穩定性試驗還應在系統上施加不均勻的壓力。
性能測試是對系統增加接入壓力,以獲得系統性能指標、**大承載能力和**大承壓能力的過程。在系統測試環境中,所謂訪問壓力的增加,就是不斷增加測試程序的并發請求數。一般來說,性能測試遵循拋物線規律,如圖4.3所示。圖4.3中的橫坐標表示消耗的系統資源,縱坐標表示系統處理能力(吞吐量)。在初始階段,隨著并發請求數的增加,系統使用更少的資源來獲得更好的處理能力(UB段)。該段為網站的日運行間隔,且網站的接入負荷壓力大部分集中在該段。
這叫做性能測試。測試目標是評價系統性能是否滿足要求和設計目標;隨著壓力持續增加,系統的處理能力緩慢增加,直到達到**大值(C點),這是系統的**大負載點。此部分稱為負載測試。測試的目的是評估系統在緊急情況下超過每日接入壓力時所能承受的**大接入負載壓力;在此之后,如果壓力增加,系統的處理能力將降低,但資源消耗將增加。在資源消耗達到極限(d點)之前,該點可視為系統的崩潰點。如果并發請求的數量繼續增加超過這一點,系統將無法再處理任何請求。本節稱為壓力測試,測試的目標是評估可能導致系統崩潰的**大訪問負載壓力。
性能測試反映了系統在實際生產環境中使用時,隨著并發用戶數的增加,系統的處理能力。性能曲線對應的是用戶訪問的等待時間(系統響應時間),如圖4.4所示。
4.1.4性能試驗報告
試驗結果報告應能反映上述性能試驗曲線的規律。讀者可以獲得系統性能是否滿足設計目標和業務要求、系統**大負載能力、系統**大承壓能力等重要信息。表4.2是一個簡單的示例。
4.1.5性能優化策略
如果性能測試結果不能滿足設計或業務需求,則需要找到系統的瓶頸,對其進行劃分和控制,并逐步優化。
1性能分析
大盤網站結構復雜。用戶需要從瀏覽器向數據庫發出請求才能完成操作事務。如果測試或用戶報告網站響應緩慢且存在性能問題,則需要分析請求經歷的所有鏈接,并檢查可能的性能瓶頸并定位問題。
支票mdash;網站的性能瓶頸與檢查程序的性能瓶頸基本相同:檢查請求處理各個環節的日志,分析哪個環節響應時間不合理,超出預期;然后檢查監控數據,分析影響性能的主要因素:內存、磁盤、網絡或CPU、代碼問題或架構不合理設計,或系統資源確實不足。
2性能優化
在找出性能問題的具體原因之后,需要進行性能優化。按照分層架構網站,可以分為三類:Web前端性能優化、應用服務器性能優化和存儲服務器性能優化。
4.2 web前端性能優化
一般來說,web前端是指業務邏輯網站之前的部分,包括瀏覽器加載、網站視圖模型、圖片服務和CDN服務。主要的優化方法有優化瀏覽器訪問、使用反向代理、CDN等。
4.2.1瀏覽器訪問優化
1減少HTTP請求
HTTP協議是無狀態的應用層協議,這意味著每次都需要通信鏈路和數據傳輸HTTP請求。在服務器端,每個HTTP都需要啟動獨立的線程來處理。這些通信和服務是昂貴的,減少HTTP請求的數量可以有效地提高訪問性能。
減少HTTP的主要方法是合并CSS、合并JavaScript和合并圖片。一次合并瀏覽器對一個文件的JavaScript和CSS所需訪問權限,以便瀏覽器只需要一個請求。圖片也可以合并,多張圖片可以合并成一張。如果每張圖片有不同的超鏈接,您可以通過偏移量CSS響應鼠標單擊操作,并構造不同的URL。
2對于使用瀏覽器緩存的網站,更新靜態資源文件CSS、JavaScript、徽標和圖標的頻率相對較低,幾乎每次都需要這些文件HTTP請求。如果這些文件緩存在瀏覽器中,
更低,而且幾乎每次都需要這些文件HTTP請求,如果將它們緩存在瀏覽器中,可以很好地提高性能。通過在HTTP頭中設置Cache-Control和Expires的屬性,可以設置瀏覽器緩存,可以是幾天甚至幾個月。
在某些情況下,靜態資源文件的更改需要及時應用到客戶端瀏覽器。這可以通過改變文件名來實現,即更新JavaScript文件不是更新JavaScript文件內容,而是生成新的JS文件并更新HTML文件中的引用。
當使用瀏覽器緩存策略網站更新靜態資源時,應采用批量更新方法。例如,需要更新10個圖標文件。與其一次更新全部10個文件,不如一個文件一步一步地更新,間隔一定時間,這樣可以避免用戶瀏覽器中大量緩存突然失效而集中更新緩存,造成服務器負載激增、網絡擁塞。
3啟用壓縮在服務器端壓縮文件,在瀏覽器端解壓文件,可以有效減少通信傳輸次數。在服務器端壓縮文件,在瀏覽器端解壓文件,可以有效減少數據傳輸。文本文件的壓縮效率可以達到80%以上,因此對HTML,CSS、JavaScript文件**好使用gzip壓縮。但是,壓縮對服務器和瀏覽器都有一定的壓力,在通信帶寬好、服務器資源不足的情況下應該考慮壓縮。
4. CSS頁面頂部,JavaScript頁面底部
瀏覽器在下載完全部CSS后會呈現整個頁面,所以**好的方法是將CSS放在頁面頂部,讓瀏覽器盡快下載CSS(相反,瀏覽器在加載JavaScript后會立即執行),這可能會阻塞整個頁面,導致頁面顯示緩慢。所以'avaScript**好放在頁面底部。但如果需要使用JavaScript進行頁面解析,則不宜將其放在底部。
5減排量Cookie
一方面,Cookie包含在每個請求和響應中,過大的Cookie會嚴重影響數據傳輸,因此需要仔細考慮哪些數據需要寫入Cookie中,并且Cookie中傳輸的數據需要**小化。另一方面,對于一些靜態資源訪問,例如CSS、Script,發送Cookie是沒有意義的。我們可以考慮使用獨立域名訪問靜態資源,在請求靜態資源時避免發送Cookie,減少Cookie傳輸次數。
4.2.2CDN加速CDN(內容分發網絡,內容分發網絡)的實質仍然是緩存,而數據緩存會在離用戶**近的地方,這樣用戶才能以**快的速度獲取數據,也就是所謂的網絡訪問**跳,如圖4.5所示。
由于CDN部署在網絡運營商的機房,網絡運營商也是終端用戶的網絡服務提供商,因此用戶請求路由的**跳到達CDN服務器。當CDN中有瀏覽器請求的資源時,直接從CDN返回到瀏覽器,**短路徑返回響應,加快用戶訪問速度,降低數據中心負載壓力。
CDN可以緩存靜態資源,例如圖片、文件、CSS、Script腳本、靜態網頁。但是,這些文件經常被訪問。將它們緩存在CDN中可以大大提高網頁的打開速度。
http://www.bangwork.net/jianzhanzhishi/1352.html 大規模高性能網站性能測試方法