loadrunner理解進程和線程的區別

今天壓測活動相關頁面,遇到一個問題:
400個VU,設置按線程運行出現多個報錯,設置爲按進程運行所有運行成功,沒有報錯。因此好奇他二者的區別,如今大體瞭解了~~~多線程

進程和線程的區別是什麼?
簡而言之,一個程序至少有一個進程,一個進程至少有一個線程. 線程的劃分尺度小於進程,使得多線程程序的併發性高。另外,進程在執行過程當中擁有獨立的內存單元,而多個線程共享內存,從而極大地提升了程序的運行效率。併發

線程在執行過程當中與進程仍是有區別的。每一個獨立的線程有一個程序運行的入口、順序執行序列和程序的出口。可是線程不可以獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。ide

從邏輯角度來看,多線程的意義在於一個應用程序中,有多個執行部分能夠同時執行。但操做系統並無將多個線程看作多個獨立的應用,來實現進程的調度和管理以及資源分配。這就是進程和線程的重要區別。測試

進程方式和線程方式的優缺點:操作系統

選擇按照進程方式運行, 每一個用戶都將啓動一個mmdrv進程,多個mmdrv進程會佔用大量內存及其餘系統資源,這就限制了能夠在任一負載生成器上運行的併發用戶數的數量,由於負載機的資源(內存及其餘系統資源)是有限的。線程

選擇按照線程方式運行,在默認狀況下,controller爲每50個用戶僅啓動一個mmdrv進程,而每一個用戶都按線程方式來運行,這些線程用戶將共享父進程的內存段,這就節省了大量內存空間,從而能夠在一個負載生成器上運行更多的用戶。blog

選擇線程方式雖然能夠減小啓動的mmdrv進程數,減小了內存的佔用,可是也容易出現一個問題,例如,同一個測試場景,用線程併發就會出現超時失敗或報錯,而用進程併發就沒錯。爲何呢?由於線程的資源是從進程資源中分配出來的,所以同一個進程中的多個線程會有共享的內存空間,假設a線程要用資源就必須等待b線程釋放,而b線程也在等待其餘資源釋放才能繼續,這樣就會出現這個問題。進程

因此若是在併發時出現報錯,可嘗試下修改併發用戶運行方式。內存

loadrunner理解進程和線程的區別

固然,報錯也多是其餘因素影響,可是你們也能夠嘗試着根據報錯緣由,逐步排查問題呦。資源

相關文章
相關標籤/搜索