大型票務(wù)系統(tǒng)性能測試淺析
其中,優(yōu)化項(xiàng)所有內(nèi)容必須滿足,附加項(xiàng)可以不滿足,在評測結(jié)果中Y代表滿足、N代表不滿足、Null代表無優(yōu)化項(xiàng)相關(guān)技術(shù)。評測結(jié)果共分為A、B、C、D、E和U六個級別。具體對應(yīng)關(guān)系如下表所示:
表2 評級標(biāo)準(zhǔn)
4.2 后端性能測試方法
測試主要采用商業(yè)級別的性能測試工具進(jìn)行測試,如HP Loadrunner。通過大規(guī)模模擬實(shí)際用戶的操作行為,測試核心售票系統(tǒng)中注冊、瀏覽、座位選擇、支付等關(guān)鍵業(yè)務(wù)的響應(yīng)時間和服務(wù)器實(shí)時處理能力,重點(diǎn)關(guān)注CPU、內(nèi)存、I/O等信息,為操作系統(tǒng)、中間件和數(shù)據(jù)庫以及服務(wù)器的性能優(yōu)化和調(diào)整提供數(shù)據(jù)依據(jù)。
通常情況下,數(shù)據(jù)中心中用于支撐售票業(yè)務(wù)的服務(wù)器多達(dá)幾百臺,通過軟件在測試中進(jìn)行監(jiān)控更容易實(shí)現(xiàn),如UC Berkeley的開源集群監(jiān)視軟件Ganglia。Ganglia的核心包含gmond、gmetad以及一個Web前端,通過自動解析linux操作系統(tǒng)proc目錄下的文件來獲取操作系統(tǒng)的主要性能指標(biāo)。Ganglia帶來的系統(tǒng)負(fù)載非常少,幾乎不會影響被監(jiān)控系統(tǒng)性能。對于中間件和數(shù)據(jù)庫等基礎(chǔ)軟件,可采用其自帶的監(jiān)視器或命令來獲取性能指標(biāo)。
在測試場景設(shè)計(jì)中,應(yīng)考慮準(zhǔn)確模擬混合業(yè)務(wù)的并發(fā)操作,以及過載訪問的情況,可借鑒下表中的思路進(jìn)行測試:
表3后端性能測試場景
通過測試考察運(yùn)行環(huán)境的抗壓能力,在成本和風(fēng)險可接受范圍內(nèi)對整個運(yùn)行環(huán)境進(jìn)行合理優(yōu)化,提高核心售票系統(tǒng)的處理能力。總的來說,高效的核心售票系統(tǒng)在上線前達(dá)到以下要求:
A、核心業(yè)務(wù)模塊中無明顯效率低下的模塊
B、多個數(shù)據(jù)中心間實(shí)現(xiàn)了良好的負(fù)載均衡,整個運(yùn)行環(huán)境中不存在明顯的服務(wù)器資源消耗過度的情況
C、整個運(yùn)行環(huán)境的網(wǎng)絡(luò)承受負(fù)載的能力良好,各銀行支付網(wǎng)點(diǎn)進(jìn)行了合理的組網(wǎng)規(guī)劃,網(wǎng)站與支付系統(tǒng)的流量實(shí)現(xiàn)良好分離
D、在正常和過載情況下,系統(tǒng)的定單數(shù)量/小時指標(biāo)在合理范圍內(nèi),代理服務(wù)器、交易服務(wù)器以及數(shù)據(jù)庫服務(wù)器的資源消耗合理
5、總結(jié)
通過分析大型票務(wù)系統(tǒng)的訪問特點(diǎn)和規(guī)律,提出了大型票務(wù)系統(tǒng)的性能測試策略和方法,該方法經(jīng)具備普遍的合理性和較強(qiáng)的操作性,但是該方法還有待在更多大型票務(wù)系統(tǒng)性能測試中進(jìn)行應(yīng)用和完善。
隨著互聯(lián)網(wǎng)的普及,越來越多的傳統(tǒng)業(yè)務(wù)轉(zhuǎn)移到了網(wǎng)絡(luò)進(jìn)行。但是由于大型票務(wù)系統(tǒng)受眾訪問高峰、持續(xù)性等特殊性,使得傳統(tǒng)的性能測試策略并不適合該類系統(tǒng)的測試。例如北京奧運(yùn)會票務(wù)系統(tǒng)和倫敦奧運(yùn)會票務(wù)系統(tǒng)的在運(yùn)營階段不斷的癱瘓、修復(fù)、上線運(yùn)營的循環(huán)中,大型票務(wù)系統(tǒng)的性能測試顯得尤為重要。
2、關(guān)鍵技術(shù)
2.1 Web應(yīng)用響應(yīng)時間
其中C1是用戶發(fā)請求前在客戶端完成預(yù)處理階段;C2是客戶端接收到服務(wù)器返響應(yīng)后,對處理結(jié)果展現(xiàn)的階段;A1是WEB Server或者APP Server對請求進(jìn)行處理階段;A2是數(shù)據(jù)庫服務(wù)器對請求進(jìn)行處理階段;A3是WEB Server或者APP Server對DB Server 返回結(jié)果進(jìn)行處理的階段;N1是請求由客戶端發(fā)出并達(dá)到Web/App Server 的階段;N2是如果需要進(jìn)行數(shù)據(jù)庫相關(guān)的操作,由Web/App Server 將請求發(fā)送至DB Server 階段;N3是DB Server 完成處理并將結(jié)果返回Web/App Server 階段;N4是Web/App Server 完成處理并將結(jié)果返回給客戶端階段。
從用戶的角度來看,響應(yīng)時間=(C1+C2)+(A1+A2+A3)+(N1+N2+N3+N4);但是從系統(tǒng)的角度來看,響應(yīng)時間只包括(A1+A2+A3)+(N1+N2+N3+N4)。
2.2 前端性能
所謂前端是相對于后端而言的,后端是用戶分析用戶請求、執(zhí)行數(shù)據(jù)查詢并對結(jié)果進(jìn)行組織,形成瀏覽器可以完全呈現(xiàn)的內(nèi)容;前端是負(fù)責(zé)將后端生成的內(nèi)容通過網(wǎng)絡(luò)發(fā)送給客戶段瀏覽器,展現(xiàn)后端請求處理結(jié)果的。前端開發(fā)技術(shù)主要有(X)HTML/CSS/JavaScript/DOM/Flash等各種Web技術(shù)。前端性能主要是在客戶端通過瀏覽器發(fā)送了一個請求,除去后端處理消耗的時間的瀏覽器展示后端訪問請求的時間。也就是圖1中C1+C2+N1+N2階段,其中主要衡量接受到的數(shù)據(jù)的大小、接受響應(yīng)數(shù)據(jù)的碎片程度等方面。
在交互式應(yīng)用中,響應(yīng)時間大于15秒,對于大多數(shù)人是無法容忍的,相應(yīng)時間大于4秒時,人的短期記憶會受到影響,工作的連續(xù)性就會被破壞。對于一個用戶的每次訪問來說,80%的響應(yīng)時間消耗在了前端。而且對于提升網(wǎng)站的訪問速度而言,如果通過后端優(yōu)化將響應(yīng)速度提升一賠,那么整體的響應(yīng)時間僅僅只能減少5%到10%;而如果通過優(yōu)化前端將響應(yīng)時間減少一半,則整體響應(yīng)時間至少減少40%到45%。
2.3 后端性能
后端性能是指web Server或者APP Server在收到客戶端響應(yīng)后,對其進(jìn)行處理,通過數(shù)據(jù)庫數(shù)據(jù)返回結(jié)果,經(jīng)過處理將返回響應(yīng)發(fā)送給客戶端的過程。也就是圖1中邏輯業(yè)務(wù)流經(jīng)過A1、A2、A3、N2、N3的過程中對各個階段的響應(yīng)時間、服務(wù)器資源利用率、網(wǎng)絡(luò)負(fù)載等方面的衡量。
性能度量就是通過定義一系列可以反映程序性能的指標(biāo),并從程序?qū)嶋H運(yùn)行的數(shù)據(jù)中獲得度量結(jié)果的過程。性能度量的結(jié)果可以用于評估系統(tǒng)的性能好壞、分析性能瓶頸和改進(jìn)系統(tǒng)性能等。針對Web應(yīng)用性能,有兩種常用度量指標(biāo):度量資源使用情況,度量響應(yīng)時間。
3、大型票務(wù)系統(tǒng)性能評價方法
3.1 前段性能評價方法
對于大型票務(wù)系統(tǒng)而言,前端性能的優(yōu)化主要是為了加快響應(yīng)結(jié)果在客戶端的響應(yīng)速度,這樣能夠避免用戶誤以為無響應(yīng)而反復(fù)的刷新造成服務(wù)器端壓力。在評測過程中主要從如下幾個方面進(jìn)行考慮:
A、CSS文件或者代碼至于頂部
B、JavaScript腳本文件或者代碼至于文件的底部
C、CSS文件或者代碼中無CSS表達(dá)式
D、JavaScript腳本文件或者代碼中無重復(fù)腳本
E、移除無用的CSS
F、對JavaScript腳本進(jìn)行了精簡
G、精簡CSS腳本
H、外鏈JavaScript腳本并且合并多個javascript腳本文件
I、外鏈CSS并且合并多個CSS文件
J、應(yīng)用圖片地圖或者CSS Sprites
K、應(yīng)用Expires頭
L、無重定向
M、應(yīng)用GZip壓縮
N、配置ETag
在上述的評測內(nèi)容中主要包括了兩方面,其一是腳本文件的優(yōu)化,資源文件的優(yōu)化和CSS文件的優(yōu)化三大方面。服務(wù)器文件優(yōu)化就是降低在客戶端訪問服務(wù)器端時,除去HTML文檔外其他所有內(nèi)容的物理大小,減小傳輸時間和加載時間。其二是依據(jù)HTTP協(xié)議特性,通過配置中間件、修改源程序等操作進(jìn)行的優(yōu)化。在完成上述14項(xiàng)技術(shù)評價指標(biāo)后,仍有如下4項(xiàng)附加項(xiàng)需要考慮:
O、應(yīng)用Ajax緩存
P、應(yīng)用CDN
Q、混淆JavaScript
R、頁面DNS查找最小化
由于上述四項(xiàng)附加是由相對復(fù)雜,風(fēng)險較大、實(shí)現(xiàn)成本較高技術(shù)決定的,因此附加項(xiàng)的滿足條件就視項(xiàng)目的投入成本情況而定,并不一定要完全滿足。
3.2 后端性能評價方法
由于票務(wù)系統(tǒng)通常在短時間內(nèi)進(jìn)行集中售票,存在短時間內(nèi)訪問量陡增、售票期間持續(xù)高壓力以及與銀行支付業(yè)務(wù)緊密相關(guān)等特點(diǎn),因此保證大壓力下的核心售票系統(tǒng)能夠提供高性能的服務(wù)水平,將直接影響終端用戶的購票體驗(yàn)。糟糕的用戶體驗(yàn)包括:
A、超長的等待時間
B、頁面無響應(yīng)
C、支付失敗
從性能測試角度看,整個運(yùn)行環(huán)境在承受來自世界各地高強(qiáng)度的并發(fā)訪問過程中,可能存在以下問題:
A、網(wǎng)絡(luò)擁塞導(dǎo)致頁面請求響應(yīng)緩慢或超時報錯
B、頁面刷新機(jī)制導(dǎo)致在用戶鎖票、坐席分配以及支付階段時,用戶等待時間增長,訂單處理速度急劇下降
C、大量的金額統(tǒng)計(jì)以及票務(wù)更新導(dǎo)致交易服務(wù)器和后臺數(shù)據(jù)庫繁忙
D、大量的VISA卡支付操作導(dǎo)致支付網(wǎng)點(diǎn)服務(wù)器繁忙,處理效率底下
為準(zhǔn)確模擬實(shí)際情況,需將歷史經(jīng)驗(yàn)同本次售票方案相結(jié)合,預(yù)計(jì)并發(fā)訪問人數(shù)、網(wǎng)點(diǎn)規(guī)模、數(shù)據(jù)規(guī)模等指標(biāo),在保證數(shù)據(jù)中心實(shí)現(xiàn)良好數(shù)據(jù)共享的情況下,測試的重點(diǎn)應(yīng)涉及一下幾個方面:
A、網(wǎng)絡(luò)負(fù)載
B、多個數(shù)據(jù)中心間的負(fù)載均衡
C、峰值期間每小時定單數(shù)量
D、代理服務(wù)器、交易服務(wù)器、數(shù)據(jù)庫服務(wù)器的資源消耗情況
E、長時間高效服務(wù)的能力
4、大型票務(wù)系統(tǒng)性能測試方法
4.1 前段性能測試方法
前端性能主要的評測工具有Google的Page Speed和Yahoo的YSlow。Google開發(fā)團(tuán)隊(duì)針對SteveSounder網(wǎng)頁性能最優(yōu)方法,成功地推出一款基于Firefox/Firebug的開發(fā)類插件Page Speed,旨在幫助開發(fā)人員分析網(wǎng)站性能存在的主要問題,并有針對性地提出優(yōu)化改進(jìn)意見。它支持的操作系統(tǒng)為Linux、Mac、Windows。在此之前, Google內(nèi)部已經(jīng)廣泛使用PageSpeed優(yōu)化網(wǎng)頁前端性能。YSlow是有雅虎公司開發(fā)的免費(fèi)前端性能檢測工具。YSlow通過檢測網(wǎng)頁上的所有組件,包括JavaScript動態(tài)創(chuàng)建的組件,分析網(wǎng)頁的前端性能。同時,YSlow依據(jù)前端性能的分析結(jié)果提出改進(jìn)建議。
在應(yīng)用上述兩款任意一款給你工具進(jìn)行測試后,將測試結(jié)果對應(yīng)的填入下面的前段性能評測記錄表中。
表1 前段性能評測記錄表
其中,優(yōu)化項(xiàng)所有內(nèi)容必須滿足,附加項(xiàng)可以不滿足,在評測結(jié)果中Y代表滿足、N代表不滿足、Null代表無優(yōu)化項(xiàng)相關(guān)技術(shù)。評測結(jié)果共分為A、B、C、D、E和U六個級別。具體對應(yīng)關(guān)系如下表所示:
表2 評級標(biāo)準(zhǔn)
4.2 后端性能測試方法
測試主要采用商業(yè)級別的性能測試工具進(jìn)行測試,如HP Loadrunner。通過大規(guī)模模擬實(shí)際用戶的操作行為,測試核心售票系統(tǒng)中注冊、瀏覽、座位選擇、支付等關(guān)鍵業(yè)務(wù)的響應(yīng)時間和服務(wù)器實(shí)時處理能力,重點(diǎn)關(guān)注CPU、內(nèi)存、I/O等信息,為操作系統(tǒng)、中間件和數(shù)據(jù)庫以及服務(wù)器的性能優(yōu)化和調(diào)整提供數(shù)據(jù)依據(jù)。
通常情況下,數(shù)據(jù)中心中用于支撐售票業(yè)務(wù)的服務(wù)器多達(dá)幾百臺,通過軟件在測試中進(jìn)行監(jiān)控更容易實(shí)現(xiàn),如UC Berkeley的開源集群監(jiān)視軟件Ganglia。Ganglia的核心包含gmond、gmetad以及一個Web前端,通過自動解析linux操作系統(tǒng)proc目錄下的文件來獲取操作系統(tǒng)的主要性能指標(biāo)。Ganglia帶來的系統(tǒng)負(fù)載非常少,幾乎不會影響被監(jiān)控系統(tǒng)性能。對于中間件和數(shù)據(jù)庫等基礎(chǔ)軟件,可采用其自帶的監(jiān)視器或命令來獲取性能指標(biāo)。
在測試場景設(shè)計(jì)中,應(yīng)考慮準(zhǔn)確模擬混合業(yè)務(wù)的并發(fā)操作,以及過載訪問的情況,可借鑒下表中的思路進(jìn)行測試:
表3后端性能測試場景
通過測試考察運(yùn)行環(huán)境的抗壓能力,在成本和風(fēng)險可接受范圍內(nèi)對整個運(yùn)行環(huán)境進(jìn)行合理優(yōu)化,提高核心售票系統(tǒng)的處理能力。總的來說,高效的核心售票系統(tǒng)在上線前達(dá)到以下要求:
A、核心業(yè)務(wù)模塊中無明顯效率低下的模塊
B、多個數(shù)據(jù)中心間實(shí)現(xiàn)了良好的負(fù)載均衡,整個運(yùn)行環(huán)境中不存在明顯的服務(wù)器資源消耗過度的情況
C、整個運(yùn)行環(huán)境的網(wǎng)絡(luò)承受負(fù)載的能力良好,各銀行支付網(wǎng)點(diǎn)進(jìn)行了合理的組網(wǎng)規(guī)劃,網(wǎng)站與支付系統(tǒng)的流量實(shí)現(xiàn)良好分離
D、在正常和過載情況下,系統(tǒng)的定單數(shù)量/小時指標(biāo)在合理范圍內(nèi),代理服務(wù)器、交易服務(wù)器以及數(shù)據(jù)庫服務(wù)器的資源消耗合理
5、總結(jié)
通過分析大型票務(wù)系統(tǒng)的訪問特點(diǎn)和規(guī)律,提出了大型票務(wù)系統(tǒng)的性能測試策略和方法,該方法經(jīng)具備普遍的合理性和較強(qiáng)的操作性,但是該方法還有待在更多大型票務(wù)系統(tǒng)性能測試中進(jìn)行應(yīng)用和完善。
posted on 2012-07-30 10:36 順其自然EVO 閱讀(283) 評論(0) 編輯 收藏 所屬分類: 性能測試