今天壓測活動相關(guān)頁面,遇到一個問題:
400個VU,設(shè)置按線程運(yùn)行出現(xiàn)多個報錯,設(shè)置為按進(jìn)程運(yùn)行全部運(yùn)行成功,沒有報錯。所以好奇他兩者的區(qū)別,現(xiàn)在大致了解了~~~
進(jìn)程和線程的區(qū)別是什么?
簡而言之,一個程序至少有一個進(jìn)程,一個進(jìn)程至少有一個線程. 線程的劃分尺度小于進(jìn)程,使得多線程程序的并發(fā)性高。另外,進(jìn)程在執(zhí)行過程中擁有獨立的內(nèi)存單元,而多個線程共享內(nèi)存,從而極大地提高了程序的運(yùn)行效率。
線程在執(zhí)行過程中與進(jìn)程還是有區(qū)別的。每個獨立的線程有一個程序運(yùn)行的入口、順序執(zhí)行序列和程序的出口。但是線程不能夠獨立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個線程執(zhí)行控制。
從邏輯角度來看,多線程的意義在于一個應(yīng)用程序中,有多個執(zhí)行部分可以同時執(zhí)行。但操作系統(tǒng)并沒有將多個線程看做多個獨立的應(yīng)用,來實現(xiàn)進(jìn)程的調(diào)度和管理以及資源分配。這就是進(jìn)程和線程的重要區(qū)別。
進(jìn)程方式和線程方式的優(yōu)缺點:
選擇按照進(jìn)程方式運(yùn)行, 每個用戶都將啟動一個mmdrv進(jìn)程,多個mmdrv進(jìn)程會占用大量內(nèi)存及其他系統(tǒng)資源,這就限制了可以在任一負(fù)載生成器上運(yùn)行的并發(fā)用戶數(shù)的數(shù)量,因為負(fù)載機(jī)的資源(內(nèi)存及其他系統(tǒng)資源)是有限的。
選擇按照線程方式運(yùn)行,在默認(rèn)情況下,controller為每50個用戶僅啟動一個mmdrv進(jìn)程,而每個用戶都按線程方式來運(yùn)行,這些線程用戶將共享父進(jìn)程的內(nèi)存段,這就節(jié)省了大量內(nèi)存空間,從而可以在一個負(fù)載生成器上運(yùn)行更多的用戶。
選擇線程方式雖然可以減少啟動的mmdrv進(jìn)程數(shù),減少了內(nèi)存的占用,但是也容易出現(xiàn)一個問題,例如,同一個測試場景,用線程并發(fā)就會出現(xiàn)超時失敗或報錯,而用進(jìn)程并發(fā)就沒錯。為什么呢?因為線程的資源是從進(jìn)程資源中分配出來的,因此同一個進(jìn)程中的多個線程會有共享的內(nèi)存空間,假設(shè)a線程要用資源就必須等待b線程釋放,而b線程也在等待其他資源釋放才能繼續(xù),這樣就會出現(xiàn)這個問題。
所以如果在并發(fā)時出現(xiàn)報錯,可嘗試下修改并發(fā)用戶運(yùn)行方式。
當(dāng)然,報錯也可能是其他因素影響,但是大家也可以嘗試著根據(jù)報錯原因,逐步排查問題呦。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。