通過用lr做負(fù)載壓力測(cè)試過程發(fā)現(xiàn),如果設(shè)定不同的action迭代次數(shù),每次得出的結(jié)果是不同的,曲線的表現(xiàn)形式也是不同的。這點(diǎn)就使我們會(huì)感覺困惑,為什么要設(shè)置action的迭代次數(shù)?以及對(duì)于不同的應(yīng)用系統(tǒng)應(yīng)該怎樣設(shè)置迭代次數(shù)呢? 首先你要理解性能測(cè)試是在干什么? 性能測(cè)試是模擬系統(tǒng)一段時(shí)間內(nèi)真實(shí)的壓力情況,以考察系統(tǒng)的性能。 再看怎么模擬系統(tǒng)真實(shí)的壓力情況?比如在半個(gè)小時(shí)內(nèi),用戶都在進(jìn)行登錄操作,且平均分布在這半個(gè)小時(shí)內(nèi)。我們要做的是什么?模擬這半個(gè)小時(shí)用戶的行為。怎么模擬?估算出同時(shí)操作的人數(shù),并用LoadRunner不斷的發(fā)送登錄請(qǐng)求,這就是我們?yōu)槭裁匆?/p> 至于迭代次數(shù),只要能夠模擬出真實(shí)情況,多少次都無(wú)所謂,不過10次8次估計(jì)是模擬不出來。迭代次數(shù)至少要保證壓力達(dá)到一個(gè)穩(wěn)定值后再運(yùn)行一段時(shí)間,這樣我們得到的數(shù)據(jù)才是有效的。所以我們除非是特別要求,一般不用迭代次數(shù),而是用運(yùn)行時(shí)間。 1、迭代和并發(fā),是完全不同的概念。沒有什么關(guān)系。 比如,一個(gè)用戶迭代十次,還是一個(gè)用戶的壓力。 10個(gè)用戶執(zhí)行一次,就是10個(gè)用戶的壓力。10個(gè)用戶迭代10次,還是10個(gè)用戶的壓力。但他們都和參數(shù)化的數(shù)據(jù)有關(guān)系(也要看參數(shù)化是如何設(shè)置的,以及系統(tǒng)如何判斷提交值的)。 2、你要是想知道,LR是如何實(shí)現(xiàn)迭代和并發(fā): 說一個(gè)比較容易理解的層面:迭代就是不停的反復(fù)調(diào)用同一腳本,反復(fù)執(zhí)行,注意,對(duì)1個(gè)用戶執(zhí)行10次來說,只會(huì)分配一塊內(nèi)存。10個(gè)用戶執(zhí)行一次,是調(diào)用同一腳本10次,會(huì)分配10塊內(nèi)存。LR調(diào)用腳本,編譯后,運(yùn)行,按腳本發(fā)送數(shù)據(jù)。 比如:web_url這樣的函數(shù),執(zhí)行就會(huì)發(fā)HTTP request。 如果你還想知道更細(xì)節(jié)的進(jìn)程和函數(shù)的實(shí)現(xiàn),只能側(cè)面驗(yàn)證(具體方法看各人的能力和擅長(zhǎng)),因?yàn)槲覀兌疾皇荓R的開發(fā)者。 3、太顯然的問題了,參數(shù)化時(shí)選擇每次出現(xiàn)唯一,只要參數(shù)夠用就OK,不夠用,就設(shè)置相應(yīng)的規(guī)則。 action在場(chǎng)景運(yùn)行中iteration只對(duì)其起作用,對(duì)vuser_init和vuser_end都不起作用,action是一個(gè)可以被重復(fù)使用的最小單位其實(shí)你可以將所有腳本錄制到一個(gè)action里,只是不方便管理罷了。 舉個(gè)最簡(jiǎn)單的例子,像lr自帶的例子——訂票系統(tǒng),你如果把所有腳本都錄制到一個(gè)action里,那回放的時(shí)候,每個(gè)用戶登錄就只能買一張票,而如果想一個(gè)用戶買多張票的話,這樣就行不通了。那你就要設(shè)多個(gè)action,并把登錄和結(jié)束各錄制在一個(gè)action里,把買票錄到一個(gè)action中,這樣,將買票的action迭代多次,而用戶登錄和結(jié)束只運(yùn)行一次,這不就模擬了現(xiàn)實(shí)中的情況了嗎? 其實(shí)LoadRunner是以客戶端的角度來定義“響應(yīng)時(shí)間”的,當(dāng)客戶端請(qǐng)求發(fā)出去后,LoadRunner就開始計(jì)算響應(yīng)時(shí)間,一直到它收到服務(wù)器端的響應(yīng)。這個(gè)時(shí)候問題就產(chǎn)生了:如果此時(shí)的服務(wù)器端的排隊(duì)隊(duì)列已滿,服務(wù)器資源正處于忙碌的狀態(tài),那么該請(qǐng)求會(huì)駐留在服務(wù)器的線程中,換句話說,這個(gè)新產(chǎn)生的請(qǐng)求并不會(huì)對(duì)服務(wù)器端產(chǎn)生真正的負(fù)載,但很遺憾的是,該請(qǐng)求的計(jì)時(shí)器已經(jīng)啟動(dòng)了,因此我們很容易就可以預(yù)見到,這個(gè)請(qǐng)求的響應(yīng)時(shí)間會(huì)變得很長(zhǎng),甚至可能長(zhǎng)到使得該請(qǐng)求由于超時(shí)而失敗。等到測(cè)試結(jié)束后,我們查看一下結(jié)果,就會(huì)發(fā)現(xiàn)這樣一個(gè)很不幸的現(xiàn)象:事務(wù)平均響應(yīng)時(shí)間很長(zhǎng),最小響應(yīng)時(shí)間與最大響應(yīng)時(shí)間的差距很大,而這個(gè)時(shí)候的平均響應(yīng)時(shí)間,其實(shí)也就失去了它應(yīng)有的意義。也就是說,由于客戶端發(fā)送的請(qǐng)求太快而導(dǎo)致影響了實(shí)際的測(cè)量結(jié)果,設(shè)置步長(zhǎng)則可以緩解這一情況,這樣,應(yīng)該試試設(shè)置pacing,再運(yùn)行看看情況。 |
|