性能測(cè)試的方法_第1頁(yè)
性能測(cè)試的方法_第2頁(yè)
性能測(cè)試的方法_第3頁(yè)
性能測(cè)試的方法_第4頁(yè)
性能測(cè)試的方法_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、對(duì)于企業(yè)應(yīng)用程序,有許多進(jìn)行性能測(cè)試的方法,其中一些方法實(shí)行起來要比其他方法困難。所要進(jìn)行的性能測(cè)試的類型取決于想要達(dá)到的結(jié)果。例如,對(duì)于可再現(xiàn)性,基準(zhǔn)測(cè)試是最好的方法。而要從當(dāng)前用戶負(fù)載的角度測(cè)試系統(tǒng)的上限,則應(yīng)該使用容量規(guī)劃測(cè)試。本文將介紹幾種設(shè)置和運(yùn)行性能測(cè)試的方法,并討論這些方法的區(qū)別。簡(jiǎn)介如果不進(jìn)行合理的規(guī)劃,對(duì)J2EE應(yīng)用程序進(jìn)行性能測(cè)試將會(huì)是一項(xiàng)令人望而生畏且有些混亂的任務(wù)。因?yàn)閷?duì)于任何的軟件開發(fā)流程,都必須收集需求、理解業(yè)務(wù)需要,并在進(jìn)行實(shí)際測(cè)試之前設(shè)計(jì)出正式的進(jìn)度表。性能測(cè)試的需求由業(yè)務(wù)需要驅(qū)動(dòng),并由一組用例闡明。這些用例可以基于歷史數(shù)據(jù)(例如,服務(wù)器一周的負(fù)載模式)或預(yù)測(cè)的

2、近似值。弄清楚需要測(cè)試的內(nèi)容之后,就需要知道如何進(jìn)行測(cè)試了。在開發(fā)階段前期,應(yīng)該使用基準(zhǔn)測(cè)試來確定應(yīng)用程序中是否出現(xiàn)性能倒退?;鶞?zhǔn)測(cè)試可以在一個(gè)相對(duì)短的時(shí)間內(nèi)收集可重復(fù)的結(jié)果。進(jìn)行基準(zhǔn)測(cè)試的最好方法是,每次測(cè)試改變一個(gè)且只改變一個(gè)參數(shù)。例如,如果想知道增加JVM內(nèi)存是否會(huì)影響應(yīng)用程序的性能,就逐次遞增JVM內(nèi)存(例如,從1024 MB增至1224 MB,然后是1524 MB,最后是2024 MB),在每個(gè)階段收集結(jié)果和環(huán)境數(shù)據(jù),記錄信息,然后轉(zhuǎn)到下一階段。這樣在分析測(cè)試結(jié)果時(shí)就有跡可循。下一小節(jié)我將介紹什么是基準(zhǔn)測(cè)試,以及運(yùn)行基準(zhǔn)測(cè)試的最佳參數(shù)。開發(fā)階段后期,在應(yīng)用程序中的bug已經(jīng)被解決,應(yīng)

3、用程序達(dá)到一種穩(wěn)定狀態(tài)之后,可以運(yùn)行更為復(fù)雜的測(cè)試,確定系統(tǒng)在不同的負(fù)載模式下的表現(xiàn)。這些測(cè)試被稱為容量規(guī)劃測(cè)試、滲入測(cè)試(soak test)、峰谷測(cè)試(peak-rest test),它們旨在通過測(cè)試應(yīng)用程序的可靠性、健壯性和可伸縮性來測(cè)試接近于現(xiàn)實(shí)世界的場(chǎng)景。對(duì)于下面的描述應(yīng)該從抽象的意義上理解,因?yàn)槊總€(gè)應(yīng)用程序的使用模式都是不同的。例如,容量規(guī)劃測(cè)試通常都使用較緩慢的ramp-up(下文有定義),但是如果應(yīng)用程序在一天之中的某個(gè)時(shí)段中有快速突發(fā)的流量,那么自然應(yīng)該修改測(cè)試以反映這種情況。但是,要記住,因?yàn)楦牧藴y(cè)試參數(shù)(比如ramp-up周期或用戶的考慮時(shí)間(think-time)),

4、測(cè)試的結(jié)果肯定也會(huì)改變。一個(gè)不錯(cuò)的方法是,運(yùn)行一系列的基準(zhǔn)測(cè)試,確立一個(gè)已知的可控環(huán)境,然后再對(duì)變化進(jìn)行比較。基準(zhǔn)測(cè)試基準(zhǔn)測(cè)試的關(guān)鍵是要獲得一致的、可再現(xiàn)的結(jié)果。可再現(xiàn)的結(jié)果有兩個(gè)好處:減少重新運(yùn)行測(cè)試的次數(shù);對(duì)測(cè)試的產(chǎn)品和產(chǎn)生的數(shù)字更為確信。使用的性能測(cè)試工具可能會(huì)對(duì)測(cè)試結(jié)果產(chǎn)生很大影響。假定測(cè)試的兩個(gè)指標(biāo)是服務(wù)器的響應(yīng)時(shí)間和吞吐量,它們會(huì)受到服務(wù)器上的負(fù)載的影響。服務(wù)器上的負(fù)載受兩個(gè)因素影響:同時(shí)與服務(wù)器通信的連接(或虛擬用戶)的數(shù)目,以及每個(gè)虛擬用戶請(qǐng)求之間的考慮時(shí)間的長(zhǎng)短。很明顯,與服務(wù)器通信的用戶越多,負(fù)載就越大。同樣,請(qǐng)求之間的考慮時(shí)間越短,負(fù)載也越大。這兩個(gè)因素的不同組合會(huì)產(chǎn)生不

5、同的服務(wù)器負(fù)載等級(jí)。記住,隨著服務(wù)器上負(fù)載的增加,吞吐量會(huì)不斷攀升,直到到達(dá)一個(gè)點(diǎn)。?圖1.隨著負(fù)載的增加,系統(tǒng)吞吐量的曲線(單位:頁(yè)面/秒)注意,吞吐量以穩(wěn)定的速度增長(zhǎng),然后在某一個(gè)點(diǎn)上穩(wěn)定下來。在某一點(diǎn)上,執(zhí)行隊(duì)列開始增長(zhǎng),因?yàn)榉?wù)器上所有的線程都已投入使用,傳入的請(qǐng)求不再被立即處理,而是放入隊(duì)列中,當(dāng)線程空閑時(shí)再處理。?圖2. 隨著負(fù)載的增加,系統(tǒng)執(zhí)行隊(duì)列長(zhǎng)度的曲線注意,最初的一段時(shí)間,執(zhí)行隊(duì)列的長(zhǎng)度為零,然后就開始以穩(wěn)定的速度增長(zhǎng)。這是因?yàn)橄到y(tǒng)中的負(fù)載在穩(wěn)定增長(zhǎng),雖然最初系統(tǒng)有足夠的空閑線程去處理增加的負(fù)載,最終它還是不能承受,而必須將其排入隊(duì)列。 ? ?當(dāng)系統(tǒng)達(dá)到飽和點(diǎn),服務(wù)器吞吐量

6、保持穩(wěn)定后,就達(dá)到了給定條件下的系統(tǒng)上限。但是,隨著服務(wù)器負(fù)載的繼續(xù)增長(zhǎng),系統(tǒng)的響應(yīng)時(shí)間也隨之延長(zhǎng),雖然吞吐量保持穩(wěn)定。?圖3. 隨著負(fù)載的增加,系統(tǒng)中兩個(gè)事務(wù)的響應(yīng)時(shí)間曲線注意,在執(zhí)行隊(duì)列(圖2)開始增長(zhǎng)的同時(shí),響應(yīng)時(shí)間也開始以遞增的速度增長(zhǎng)。這是因?yàn)檎?qǐng)求不能被及時(shí)處理。為了獲得真正可再現(xiàn)的結(jié)果,應(yīng)該將系統(tǒng)置于相同的高負(fù)載下。為此,與服務(wù)器通信的虛擬用戶應(yīng)該將請(qǐng)求之間的考慮時(shí)間設(shè)為零。這樣服務(wù)器會(huì)立即超載,并開始構(gòu)建執(zhí)行隊(duì)列。如果請(qǐng)求(虛擬用戶)數(shù)保持一致,基準(zhǔn)測(cè)試的結(jié)果應(yīng)該會(huì)非常精確,完全可以再現(xiàn)。您可能要問的一個(gè)問題是:“如何度量結(jié)果?”對(duì)于一次給定的測(cè)試,應(yīng)該取響應(yīng)時(shí)間和吞吐量的平均值

7、。精確地獲得這些值的唯一方法是一次加載所有的用戶,然后在預(yù)定的時(shí)間段內(nèi)持續(xù)運(yùn)行。這稱為“flat”測(cè)試。?圖4. flat測(cè)試的情況(所有的用戶都是同時(shí)加載的)與此相對(duì)應(yīng)的是“ramp-up”測(cè)試。?圖5. ramp-up測(cè)試的情況(在測(cè)試期間,用戶以穩(wěn)定速度(每秒x個(gè))增加)ramp-up測(cè)試中的用戶是交錯(cuò)上升的(每幾秒增加一些新用戶)。ramp-up測(cè)試不能產(chǎn)生精確和可重現(xiàn)的平均值,這是因?yàn)橛捎谟脩舻脑黾邮敲看我徊糠郑到y(tǒng)的負(fù)載在不斷地變化。因此,flat運(yùn)行是獲得基準(zhǔn)測(cè)試數(shù)據(jù)的理想模式。這不是在貶低ramp-up測(cè)試的價(jià)值。實(shí)際上,ramp-up測(cè)試對(duì)找出以后要運(yùn)行的flat測(cè)試的范圍非

8、常有用。ramp-up測(cè)試的優(yōu)點(diǎn)是,可以看出隨著系統(tǒng)負(fù)載的改變,測(cè)量值是如何改變的。然后可以據(jù)此選擇以后要運(yùn)行的flat測(cè)試的范圍。Flat測(cè)試的問題是系統(tǒng)會(huì)遇到“波動(dòng)”效果。?圖6. 一次flat測(cè)試中所測(cè)得的系統(tǒng)吞吐量的曲線(單位:頁(yè)面/秒)注意波動(dòng)的出現(xiàn),吞吐量不再是平滑的。這在系統(tǒng)的各個(gè)方面都有所體現(xiàn),包括CPU的使用量。?圖7. 一次flat測(cè)試中所測(cè)得的系統(tǒng)CPU使用量隨時(shí)間變化的曲線注意,每隔一段時(shí)間就會(huì)出現(xiàn)一個(gè)波形。CPU使用量不再是平滑的,而是有了像吞吐量圖那樣的尖峰。此外,執(zhí)行隊(duì)列也承受著不穩(wěn)定的負(fù)載,因此可以看到,隨著系統(tǒng)負(fù)載的增加和減少,執(zhí)行隊(duì)列也在增長(zhǎng)和縮減。?圖8.

9、 一次flat測(cè)試中所測(cè)得的系統(tǒng)執(zhí)行隊(duì)列的曲線注意,每隔一段時(shí)間就會(huì)出現(xiàn)一個(gè)波形。執(zhí)行隊(duì)列曲線與上面的CPU使用量圖非常相似。最后,系統(tǒng)中事務(wù)的響應(yīng)時(shí)間也遵循著這個(gè)波動(dòng)模式。 ?圖9. 一次flat測(cè)試中所測(cè)得的系統(tǒng)事務(wù)的響應(yīng)時(shí)間注意,每隔一段時(shí)間就會(huì)出現(xiàn)一個(gè)波形。事務(wù)的響應(yīng)時(shí)間也與上面的圖類似,只不過其效果隨著時(shí)間的推移逐漸減弱。當(dāng)測(cè)試中所有的用戶都同時(shí)執(zhí)行幾乎相同的操作時(shí),就會(huì)發(fā)生這種現(xiàn)象。這將會(huì)產(chǎn)生非常不可靠和不精確的結(jié)果,所以必須采取一些措施防止這種情況的出現(xiàn)。有兩種方法可以從這種類型的結(jié)果中獲得精確的測(cè)量值。如果測(cè)試可以運(yùn)行相當(dāng)長(zhǎng)的時(shí)間(有時(shí)是幾個(gè)小時(shí),取決于用戶的操作持續(xù)的時(shí)間),

10、最后由于隨機(jī)事件的本性使然,服務(wù)器的吞吐量會(huì)被“拉平”?;蛘?,可以只選取波形中兩個(gè)平息點(diǎn)之間的測(cè)量值。該方法的缺點(diǎn)是可以捕獲數(shù)據(jù)的時(shí)間非常短。性能規(guī)劃測(cè)試對(duì)于性能規(guī)劃類型的測(cè)試來說,其目標(biāo)是找出,在特定的環(huán)境下,給定應(yīng)用程序的性能可以達(dá)到何種程度。此時(shí)可重現(xiàn)性就不如在基準(zhǔn)測(cè)試中那么重要了,因?yàn)闇y(cè)試中通常都會(huì)有隨機(jī)因子。引入隨機(jī)因子的目的是為了盡量模擬具有真實(shí)用戶負(fù)載的現(xiàn)實(shí)世界應(yīng)用程序。通常,具體的目標(biāo)是找出系統(tǒng)在特定的服務(wù)器響應(yīng)時(shí)間下支持的當(dāng)前用戶的最大數(shù)。例如,您可能想知道:如果要以5秒或更少的響應(yīng)時(shí)間支持8,000個(gè)當(dāng)前用戶,需要多少個(gè)服務(wù)器?要回答這個(gè)問題,需要知道系統(tǒng)的更多信息。要確定

11、系統(tǒng)的容量,需要考慮幾個(gè)因素。通常,服務(wù)器的用戶總數(shù)非常大(以十萬(wàn)計(jì)),但是實(shí)際上,這個(gè)數(shù)字并不能說明什么。真正需要知道的是,這些用戶中有多少是并發(fā)與服務(wù)器通信的。其次要知道的是,每個(gè)用戶的“考慮時(shí)間”即請(qǐng)求間時(shí)間是多少。這非常重要,因?yàn)榭紤]時(shí)間越短,系統(tǒng)所能支持的并發(fā)用戶越少。例如,如果用戶的考慮時(shí)間是1秒,那么系統(tǒng)可能只能支持?jǐn)?shù)百個(gè)這樣的并發(fā)用戶。但是,如果用戶的考慮時(shí)間是30秒,那么系統(tǒng)則可能支持?jǐn)?shù)萬(wàn)個(gè)這樣的并發(fā)用戶(假定硬件和應(yīng)用程序都是相同的)。在現(xiàn)實(shí)世界中,通常難以確定用戶的確切考慮時(shí)間。還要注意,在現(xiàn)實(shí)世界中,用戶不會(huì)精確地按照間隔時(shí)間發(fā)出請(qǐng)求。于是就引入了隨機(jī)性。如果知道普通用

12、戶的考慮時(shí)間是5秒,誤差為20%,那么在設(shè)計(jì)負(fù)載測(cè)試時(shí),就要確保請(qǐng)求間的時(shí)間為5×(1 +/- 20%)秒。此外,可以利用“調(diào)步”的理念向負(fù)載場(chǎng)景中引入更多的隨機(jī)性。它是這樣的:在一個(gè)虛擬用戶完成一整套的請(qǐng)求后,該用戶暫停一個(gè)設(shè)定的時(shí)間段,或者一個(gè)小的隨機(jī)時(shí)間段(例如,2×(1 +/- 25%)秒),然后再繼續(xù)執(zhí)行下一套請(qǐng)求。將這兩種隨機(jī)化方法運(yùn)用到測(cè)試中,可以提供更接近于現(xiàn)實(shí)世界的場(chǎng)景。現(xiàn)在該進(jìn)行實(shí)際的容量規(guī)劃測(cè)試了。接下來的問題是:如何加載用戶以模擬負(fù)載狀態(tài)?最好的方法是模擬高峰時(shí)間用戶與服務(wù)器通信的狀況。這種用戶負(fù)載狀態(tài)是在一段時(shí)間內(nèi)逐步達(dá)到的嗎?如果是,應(yīng)該使用ra

13、mp-up類型的測(cè)試,每隔幾秒增加x個(gè)用戶?;蛘?,所有用戶是在一個(gè)非常短的時(shí)間內(nèi)同時(shí)與系統(tǒng)通信?如果是這樣,就應(yīng)該使用flat類型的測(cè)試,將所有的用戶同時(shí)加載到服務(wù)器。兩種不同類型的測(cè)試會(huì)產(chǎn)生沒有可比性的不同測(cè)試。例如,如果進(jìn)行ramp-up類型的測(cè)試,系統(tǒng)可以以4秒或更短的響應(yīng)時(shí)間支持5,000個(gè)用戶。而執(zhí)行flat測(cè)試,您會(huì)發(fā)現(xiàn),對(duì)于5,000個(gè)用戶,系統(tǒng)的平均響應(yīng)時(shí)間要大于4秒。這是由于ramp-up測(cè)試固有的不準(zhǔn)確性使其不能顯示系統(tǒng)可以支持的并發(fā)用戶的精確數(shù)字。以門戶應(yīng)用程序?yàn)槔?,隨著門戶規(guī)模的擴(kuò)大和集群規(guī)模的擴(kuò)大,這種不確定性就會(huì)隨之顯現(xiàn)。這不是說不應(yīng)該使用ramp-up測(cè)試。對(duì)于系

14、統(tǒng)負(fù)載在一段比較長(zhǎng)的時(shí)間內(nèi)緩慢增加的情況,ramp-up測(cè)試效果還是不錯(cuò)的。這是因?yàn)橄到y(tǒng)能夠隨著時(shí)間不斷調(diào)整。如果使用快速ramp-up測(cè)試,系統(tǒng)就會(huì)滯后,從而報(bào)告一個(gè)較相同用戶負(fù)載的flat測(cè)試低的響應(yīng)時(shí)間。那么,什么是確定容量的最好方法?結(jié)合兩種負(fù)載類型的優(yōu)點(diǎn),并運(yùn)行一系列的測(cè)試,就會(huì)產(chǎn)生最好的結(jié)果。例如,首先使用ramp-up測(cè)試確定系統(tǒng)可以支持的用戶范圍。確定了范圍之后,以該范圍內(nèi)不同的并發(fā)用戶負(fù)載進(jìn)行一系列的flat測(cè)試,更精確地確定系統(tǒng)的容量。滲入測(cè)試滲入測(cè)試是一種比較簡(jiǎn)單的性能測(cè)試。滲入測(cè)試所需時(shí)間較長(zhǎng),它使用固定數(shù)目的并發(fā)用戶測(cè)試系統(tǒng)的總體健壯性。這些測(cè)試將會(huì)通過內(nèi)存泄漏、增加

15、的垃圾收集(GC)或系統(tǒng)的其他問題,顯示因長(zhǎng)時(shí)間運(yùn)行而出現(xiàn)的任何性能降低。測(cè)試運(yùn)行的時(shí)間越久,您對(duì)系統(tǒng)就越了解。運(yùn)行兩次測(cè)試是一個(gè)好主意一次使用較低的用戶負(fù)載(要在系統(tǒng)容量之下,以便不會(huì)出現(xiàn)執(zhí)行隊(duì)列),一次使用較高的負(fù)載(以便出現(xiàn)積極的執(zhí)行隊(duì)列)。測(cè)試應(yīng)該運(yùn)行幾天的時(shí)間,以便真正了解應(yīng)用程序的長(zhǎng)期健康狀況。要確保測(cè)試的應(yīng)用程序盡可能接近現(xiàn)實(shí)世界的情況,用戶場(chǎng)景也要逼真(虛擬用戶通過應(yīng)用程序?qū)Ш降姆绞揭c現(xiàn)實(shí)世界一致),從而測(cè)試應(yīng)用程序的全部特性。確保運(yùn)行了所有必需的監(jiān)控工具,以便精確地監(jiān)測(cè)并跟蹤問題。峰谷測(cè)試峰谷測(cè)試兼有容量規(guī)劃ramp-up類型測(cè)試和滲入測(cè)試的特征。其目標(biāo)是確定從高負(fù)載(例如系統(tǒng)高峰時(shí)間的負(fù)載)恢復(fù)、轉(zhuǎn)為幾乎空閑、然后再攀升到高負(fù)載、再降低的能力。實(shí)現(xiàn)這種測(cè)試的最好方法就是,進(jìn)行一系列的快速ramp-up測(cè)試,繼之以一段時(shí)間的平穩(wěn)狀態(tài)(取決于業(yè)務(wù)需求),然后急劇降低負(fù)載,此時(shí)可以令系統(tǒng)平息一下,然后再進(jìn)行快速的ramp-up;反復(fù)重復(fù)這個(gè)過程。這樣可以確定以下事項(xiàng):第二次高峰是否重現(xiàn)第一次的峰值?其后的每次高峰是等于還是大于第一次的峰值?在測(cè)試過程中,系統(tǒng)是否顯示了內(nèi)存或GC性能降低的有關(guān)跡象?測(cè)試運(yùn)行(不停地重復(fù)“峰值/空閑”周期)的時(shí)間越長(zhǎng),您對(duì)系統(tǒng)的長(zhǎng)期健康狀況就越了解。結(jié)束語(yǔ)本文介紹了進(jìn)行性能測(cè)試的幾種方法。取決于業(yè)務(wù)需求、開發(fā)周期和

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論