loadrunner controller將使用驅(qū)動(dòng)程序mmdrv運(yùn)行Vuser。用戶可以在controller的run-time setting中選擇Vuser的運(yùn)行方式, 是多進(jìn)程方式or多線程方式。 如果選擇以線程方式來運(yùn)行虛擬用戶: 在場景設(shè)置時(shí),“是單行腳本,還是多行腳本”會(huì)決定系統(tǒng)啟動(dòng)的進(jìn)程數(shù)的多少: 假設(shè)并發(fā)用戶設(shè)置為30,如果是單行30個(gè)用戶,系統(tǒng)只需啟動(dòng)一個(gè)進(jìn)程; 假設(shè)并發(fā)用戶設(shè)置為30,如果是多行,30行,每行一個(gè)用戶,系統(tǒng)就需要啟動(dòng)30個(gè)進(jìn)程; 如果選擇以進(jìn)程方式來運(yùn)行虛擬用戶: 那么無論腳本在場景組中怎么設(shè)置,是單行多用戶還是多行少用戶方式,系統(tǒng)需要啟動(dòng)的進(jìn)程數(shù)是一定的,就是并發(fā)用戶的總數(shù); 進(jìn)程方式和線程方式的優(yōu)缺點(diǎn): 如果選擇按照進(jìn)程方式運(yùn)行, 每個(gè)用戶都將啟動(dòng)一個(gè)mmdrv進(jìn)程,多個(gè)mmdrv進(jìn)程會(huì)占用大量內(nèi)存及其他系統(tǒng)資源,這就限制了可以在任一負(fù)載生成器上運(yùn)行的并發(fā)用戶數(shù)的數(shù)量,因?yàn)樨?fù)載機(jī)的資源(內(nèi)存及其他系統(tǒng)資源)是有限的。 如果選擇按照線程方式運(yùn)行,在默認(rèn)情況下,controller為每50個(gè)用戶僅啟動(dòng)一個(gè)mmdrv進(jìn)程,而每個(gè)用戶都按線程方式來運(yùn)行,這些線程用戶將共享父進(jìn)程的內(nèi)存段,這就節(jié)省了大量內(nèi)存空間,從而可以在一個(gè)負(fù)載生成器上運(yùn)行更多的用戶。(如果選擇線程方式來運(yùn)行用戶,每個(gè)進(jìn)程中會(huì)多出幾個(gè)線程,例如是53個(gè),多出來的進(jìn)程可能是用于維護(hù)進(jìn)程之間的運(yùn)行的) 選擇線程方式雖然可以減少啟動(dòng)的mmdrv進(jìn)程數(shù),減少了內(nèi)存的占用,但是也容易出現(xiàn)一個(gè)問題,例如,同一個(gè)測試場景,用線程并發(fā)就會(huì)出現(xiàn)超時(shí)失敗或報(bào)錯(cuò),而用進(jìn)程并發(fā)就沒錯(cuò)。為什么呢?因?yàn)榫€程的資源是從進(jìn)程資源中分配出來的,因此同一個(gè)進(jìn)程中的多個(gè)線程會(huì)有共享的內(nèi)存空間,假設(shè)a線程要用資源就必須等待b線程釋放,而b線程也在等待其他資源釋放才能繼續(xù),這樣就會(huì)出現(xiàn)這個(gè)問題。 系統(tǒng)需要啟動(dòng)的mmdrv進(jìn)程數(shù)與哪些因素有關(guān): 與在controller 的運(yùn)行時(shí)設(shè)置中選擇的是進(jìn)程方式or線程方式來運(yùn)行虛擬用戶有關(guān) 進(jìn)程方式:無論是單行or多行腳本,需要啟動(dòng)的進(jìn)程數(shù)就是并發(fā)用戶數(shù); 線程方式:假設(shè)是單行腳本,每50個(gè)用戶才啟動(dòng)一個(gè)進(jìn)程;多行腳本,有幾行(每行<50人)就啟動(dòng)幾個(gè)進(jìn)程,而不是每個(gè)用戶啟動(dòng)一個(gè)進(jìn)程。 如果選擇了線程方式,需啟動(dòng)的進(jìn)程數(shù),進(jìn)一步還與腳本是單行還是多行有關(guān) 單行腳本,多用戶,假設(shè)少于50,只需啟動(dòng)一個(gè)進(jìn)程,100個(gè)用戶,只需啟動(dòng)2個(gè)進(jìn)程,依此類推; 多行腳本,即使每行一個(gè)用戶,也需要啟動(dòng)一個(gè)進(jìn)程,多一行就需要多啟動(dòng)一個(gè)進(jìn)程;不是每個(gè)用戶啟動(dòng)一個(gè)進(jìn)程,有幾行(每行<50人)就需要啟動(dòng)幾個(gè)進(jìn)程。 在啟動(dòng)了IP欺騙功能后,所需啟動(dòng)的進(jìn)程數(shù),還與選擇的是按進(jìn)程還是按線程來分配IP地址有關(guān) 按進(jìn)程分IP:每個(gè)ip(負(fù)載生成器)就需要多啟動(dòng)一個(gè)進(jìn)程; 按線程分IP:每個(gè)ip(負(fù)載生成器)不需要多啟動(dòng)一個(gè)進(jìn)程。
|
聯(lián)系客服