一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

《LoadRunner 沒有告訴你的》之五——無所不在的性能測試

 xiaohuan 2007-06-22

需求階段

我們不可能將一輛設(shè)計載重為0.75噸的皮卡改裝成載重15噸的大型卡車,如果你面對的正是這樣的問題,那么恐怕你只能重做一輛,而且客戶不會為你之前那輛付錢。對于一個已經(jīng)完成的應(yīng)用系統(tǒng)來說也是如此。

如果我們在系統(tǒng)結(jié)構(gòu)確定之前就能夠了解到系統(tǒng)的將要面對的壓力,用戶的使用習(xí)慣和使用頻度,我們就可以更早也更有效的提前解決或預(yù)防可能發(fā)生的性能缺陷,也將會極大的減少后期返工和反復(fù)調(diào)優(yōu)所帶來的工作量。如果我們預(yù)期到系統(tǒng)的容量將會不斷的增長,我們還可以給出相應(yīng)的解決方案來低成本的解決這類問題,就像上面那輛皮卡,也許你可以有辦法把20輛皮卡捆在一起,或者把15噸的東西分由20輛來運(yùn)。

 

分析設(shè)計階段

系統(tǒng)性能的優(yōu)化并不是要等待整個系統(tǒng)全部集成后才能開始的,早在分析設(shè)計階段,我們就可以開始考慮系統(tǒng)的技術(shù)架構(gòu)和數(shù)據(jù)庫部分的優(yōu)化。

數(shù)據(jù)庫通常位于整個系統(tǒng)的最底層,如果直到系統(tǒng)上線前才發(fā)現(xiàn)因為數(shù)據(jù)庫設(shè)計不合理而導(dǎo)致性能極差,通常使用任何一種方法來優(yōu)化都已經(jīng)于事無補(bǔ)了。要避免這類問題,最常見的做法是在數(shù)據(jù)庫結(jié)構(gòu)確定后,通過工具或腳本向數(shù)據(jù)庫中注入大量的數(shù)據(jù),并模擬各種業(yè)務(wù)的數(shù)據(jù)庫操作。根據(jù)對數(shù)據(jù)庫性能的觀察和分析,對數(shù)據(jù)庫表結(jié)構(gòu)和索引進(jìn)行調(diào)整以優(yōu)化數(shù)據(jù)庫性能。

在系統(tǒng)的技術(shù)架構(gòu)方面,要明白先進(jìn)的技術(shù)并不是解決問題的唯一方法,過于強(qiáng)調(diào)技術(shù)的作用反而會將你帶入歧途。例如:某些業(yè)務(wù)雖然經(jīng)常面臨著巨大的壓力,并且業(yè)務(wù)本身的復(fù)雜性決定了通過算法的優(yōu)化來提高系統(tǒng)的性能收效甚微。但是我們知道用戶對于該業(yè)務(wù)的實時性要求并不高,并且返回結(jié)果對于不同用戶來說是相同的。那么我們完全可以考慮將每次請求都動態(tài)生成返回結(jié)果的方式改為每次用戶請求都返回一個定期更新的靜態(tài)頁面。

另外,所謂“先進(jìn)技術(shù)”通常都會在帶來某一方面改進(jìn)的同時帶來另一方面的問題,未經(jīng)試驗就盲目的在系統(tǒng)中加入各種流行元素未必是最好的選擇。例如ORM可以提供一些方便,但是它生成的SQL是未經(jīng)優(yōu)化的,有時甚至比人工編寫的SQL效率更低。

最后,要知道不同廠家的設(shè)備性能是不同的,而且不同的硬件設(shè)備搭載不同的操作系統(tǒng)、數(shù)據(jù)庫、中間件以及應(yīng)用服務(wù)器,表現(xiàn)出來的性能也是不同的。如果有足夠的資源,應(yīng)當(dāng)考慮提前進(jìn)行軟硬件平臺的對比選型;如果沒有足夠的資源,可以考慮通過一些專業(yè)的組織或網(wǎng)站來獲取或購買相關(guān)的評估報告。

 

編碼階段

一片樹葉在哪里最難被發(fā)現(xiàn)?——當(dāng)這片樹葉落在一堆樹葉里面的時候。

如果你只是在系統(tǒng)測試完成后才開始性能測試,那么即使發(fā)現(xiàn)系統(tǒng)存在性能缺陷,并且已經(jīng)有了幾個可供懷疑的對象,但是當(dāng)一段因為使用了不當(dāng)?shù)乃惴ǘ鴮?dǎo)致執(zhí)行效率很低的代碼藏身于一個龐大的系統(tǒng)中時,找出它是非常困難的。避免這種情況出現(xiàn)的方法是盡早開始核心業(yè)務(wù)代碼的性能測試,重點(diǎn)集中在對算法和實現(xiàn)方法的優(yōu)化上。

另外,及早開始的測試也可以幫你更容易找到內(nèi)存泄漏的問題。

 

測試階段

產(chǎn)品終于交到我們手上了,搭建測試環(huán)境,設(shè)計測試場景,執(zhí)行測試,找到系統(tǒng)的最佳并發(fā)用戶數(shù)和最大并發(fā)用戶數(shù),將系統(tǒng)進(jìn)行分類,評判系統(tǒng)的性能表現(xiàn)是否滿足需求中定義的目標(biāo)——如果有需求的話 ^_^

如果發(fā)現(xiàn)系統(tǒng)的性能表現(xiàn)與預(yù)期目標(biāo)相去甚遠(yuǎn),則需要根據(jù)執(zhí)行測試過程中收集到的數(shù)據(jù)來分析和識別性能瓶頸,優(yōu)化系統(tǒng)性能。

在這個階段還有很多值得我們深入思考和討論的東西,在本系列后續(xù)的文章中,我們將會更多的關(guān)注這一部分的內(nèi)容。

 

維護(hù)階段

維護(hù)階段通常遇到的問題是需要在實驗室中模擬客戶環(huán)境,重現(xiàn)在客戶那里發(fā)現(xiàn)的缺陷并修復(fù)缺陷。相比功能缺陷,性能缺陷與某一具體環(huán)境和場景的關(guān)聯(lián)更加密切,所以在測試前需要檢查生產(chǎn)環(huán)境中各服務(wù)器的資源利用率、系統(tǒng)訪問日志、應(yīng)用服務(wù)器的日志、數(shù)據(jù)庫的日志。如果客戶使用了專門的系統(tǒng)來監(jiān)測各個服務(wù)器的軟硬件資源使用情況的話,檢查該系統(tǒng)是否記錄下了軟硬件資源的異?;蛘呔?。

 

與性能測試相關(guān)的其他測試

可靠性測試(Reliability Testing    對于一個運(yùn)營商級的系統(tǒng)來說,能夠保證提供7×24的連續(xù)穩(wěn)定的服務(wù)是非常重要的。當(dāng)然,你可以通過一些“高可用性(High Availability)”技術(shù)方案來增強(qiáng)系統(tǒng)的可靠性,但是對于系統(tǒng)本身的可靠性測試是不能被忽略的。

常用的測試方法是使用一定的負(fù)載長時間向服務(wù)器加壓,并觀察隨著加壓時間的延長,響應(yīng)時間、吞吐量以及資源利用率的變化。要注意的是,所使用的負(fù)載應(yīng)當(dāng)是系統(tǒng)的最佳并并發(fā)用戶數(shù),而不是最大并發(fā)用戶數(shù)。

可伸縮性測試(Scalability Testing 對于一個系統(tǒng)來說,在一個給定的環(huán)境下,它的最佳并發(fā)用戶數(shù)和最大并發(fā)用戶數(shù)是客觀存在的,但是系統(tǒng)所面臨的壓力卻有可能隨上線時間的延長而增大。例如,一個在線購物站點(diǎn),注冊用戶數(shù)量不斷增多,訪問站點(diǎn)查詢商品信息和購買商品的人也不斷的增多,我們應(yīng)該用一種什么樣的方案,在不影響系統(tǒng)繼續(xù)為用戶提供服務(wù)的前提下來實現(xiàn)系統(tǒng)的擴(kuò)容?

一種常用的方案是使用負(fù)載均衡(Load Balance)和集群(Cluster)技術(shù)。但是在我們?yōu)榭蛻籼峁┻@種方案之前,需要先自己進(jìn)行測試,保證該技術(shù)的有效性——我們是否真的可以通過簡單的增加服務(wù)器數(shù)據(jù)和修改某些參數(shù)配置,就能夠使得系統(tǒng)的容量得到線性的增長?

可恢復(fù)性測試(Recoverability Testing      雖然我們已經(jīng)可以準(zhǔn)確的估算出系統(tǒng)上線后將要面對的壓力,并且可以保證系統(tǒng)的最佳并發(fā)用戶數(shù)和最大并發(fā)用戶數(shù)是足以應(yīng)對這些壓力的,但是這個世界上總是有些事情上我們所無法預(yù)料到的——例如9.11事件發(fā)生后,AOL的網(wǎng)站訪問量在短時間內(nèi)增長到了平時的數(shù)十倍。

我們無法保證系統(tǒng)可以在任何情況下都能為用戶正確無誤的提供服務(wù),但是我們需要確保當(dāng)意外過去后,系統(tǒng)可以恢復(fù)到正常的狀態(tài),并繼續(xù)后來的用戶提供服務(wù)——就像從未發(fā)生過任何事情一樣。

如果要實現(xiàn)“可恢復(fù)性測試”,我們可以借助于測試工具或腳本來逐漸的增大并發(fā)用戶數(shù),直至并發(fā)用戶數(shù)已經(jīng)超過了系統(tǒng)所能承受的最大并發(fā)用戶數(shù),并導(dǎo)致軟硬件資源利用率飽和,響應(yīng)時間無限延長,大量的請求因為超過響應(yīng)時間要求或無法獲得響應(yīng)而失??;之后,我們逐漸的減少并發(fā)用戶數(shù),并觀察資源利用率、響應(yīng)時間、吞吐量以及交易成功率的變化是否與預(yù)期目標(biāo)一致。

 

當(dāng)然,這一切的前提是在系統(tǒng)負(fù)載達(dá)到峰值前,Server一直在頑強(qiáng)的掙扎著而沒有down ^_^

 

性能測試,并非網(wǎng)絡(luò)應(yīng)用專屬

軟件的性能和性能測試都是伴隨著網(wǎng)絡(luò)應(yīng)用的興起而逐漸被重視起來的,但是軟件性能和性能測試卻并非網(wǎng)絡(luò)應(yīng)用的專屬名詞,因為單機(jī)版的應(yīng)用同樣需要考慮性能問題。下面舉幾個簡單的例子來方便大家的理解:

1.               當(dāng)使用Word來編輯一個500多頁,并包含了豐富圖表、圖片和各種格式、樣式信息的文檔時,是否每次對大段的文字或表格的修改、刪除或重新排版,都要等待系統(tǒng)花幾秒鐘的時間進(jìn)行處理?

2.              當(dāng)在Excel中使用嵌套的統(tǒng)計和數(shù)學(xué)函數(shù)對幾萬行記錄進(jìn)行統(tǒng)計分析時,是否每次都要兩三分鐘才能看到結(jié)果?

3.              殺毒軟件是否每次都要花費(fèi)兩個小時才能完成一次對所有的分區(qū)的掃描?

4.              是否每次在手機(jī)的通訊簿中根據(jù)姓名搜索某個人的聯(lián)系方式都要三四秒鐘才有響應(yīng)?

如果大家有興趣,也可以通過Google搜索到更多的有關(guān)單機(jī)應(yīng)用性能測試的資料。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产亚洲视频香蕉一区| 极品少妇一区二区三区精品视频| 国产内射一级二级三级| 男女一进一出午夜视频| 麻豆一区二区三区在线免费| 国内欲色一区二区三区| 嫩呦国产一区二区三区av| 亚洲国产欧美精品久久| 欧美乱妇日本乱码特黄大片| 五月天综合网五月天综合网| 97人妻人人揉人人躁人人| 久久永久免费一区二区| 九九热这里只有免费精品| 中文字日产幕码三区国产| 91香蕉视频精品在线看| 免费在线观看欧美喷水黄片| 国产香蕉国产精品偷在线观看| 国产一区二区三区成人精品| 久久精品国产亚洲av麻豆尤物| 91偷拍视频久久精品| 欧美午夜不卡在线观看| 午夜色午夜视频之日本| 亚洲国产性生活高潮免费视频 | 手机在线观看亚洲中文字幕| 日韩人妻中文字幕精品| 成人日韩视频中文字幕| 国产肥妇一区二区熟女精品| 久久精品国产在热亚洲| 欧美三级不卡在线观线看| 久久精品蜜桃一区二区av| 亚洲中文字幕人妻系列| 日本欧美三级中文字幕| 欧美日韩三区在线观看| 亚洲美女国产精品久久| 国产老熟女超碰一区二区三区| 亚洲国产av一二三区| 欧美大粗爽一区二区三区| 精品人妻精品一区二区三区| 日韩人妻毛片中文字幕| 日本高清中文精品在线不卡| 日韩精品一级片免费看|