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