qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請?jiān)L問 http://qaseven.github.io/

          大型票務(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)用和完善。

            1、引言

           

            隨著互聯(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)  編輯  收藏 所屬分類: 性能測試

          <2012年7月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 包头市| 普洱| 修武县| 名山县| 广南县| 永丰县| 秦皇岛市| 阿坝县| 大宁县| 庆安县| 鲁甸县| 呼图壁县| 宝清县| 沾化县| 九龙县| 大足县| 沂源县| 滨海县| 三江| 库尔勒市| 突泉县| 高平市| 临夏市| 河池市| 南汇区| 共和县| 泗洪县| 长顺县| 五台县| 永福县| 伊宁市| 固镇县| 汶川县| 宁武县| 芜湖县| 九江县| 湖南省| 南溪县| 泾源县| 景泰县| 马边|