Jmeter的執行原理
LoadRunner可以選擇是以程序方式還是以執行緒方式來執行,在jmeter中我們是以縣城方式來執行的。由於jmeter是執行在JVM上的,每個程序的開銷比loadRunner的程序開銷要打,如果以程序的方式來執行的話,每臺負載機上的程序數就不會允許太多,當我們需要大量併發時就需要大量的負載機,這顯然是不經濟的,再者java也是支援多執行緒的,所以Jmeter選擇了以執行緒方式來執行。
jmeter通過執行緒組來驅動多個執行緒(類似loadrunner中的虛擬使用者)執行測試指令碼對被測伺服器發起負載,每一個負載機(一個虛擬機器可以算作一個負載機)上都可以執行多個執行緒組。如下圖所示的測試計劃中就有兩個執行緒組。jmeter執行場景不僅可以在gui方式中完成,還可以使用命令列,而且命令列執行的方式對於負載機的資源消耗會更小。
1.控制機:運用多臺Jmeter負載機進行效能測試時,被選中作為管理機的那臺機器就是控制機。jmter控制機也可以參與指令碼的執行,同時他也擔負著管理遠端負載機指揮遠端負載機執行的任務,並且手機遠端負載機的測試結果。
2.負載機:向被測試應用服務發起負載的機器,控制機同時也是一臺負載機。jmeter負載機受控制機管理。與其他支援遠端執行的測試工具一樣,負載機受控制機管理首先要啟動一個客戶端程式(agent:jmeter-server.bat),這樣控制機才可以接管負載機。控制機會把執行的指令碼隱蔽地發到遠端負載機,但是如果執行測試指令碼有引數檔案以及依賴的jar包是,控制機並不能把他們傳送到遠端負載機,這種情況就需要手動拷貝了,當然在利用jmeter做效能測試自動化時不能這樣,我們可以用工具來自動拷貝。
3.遠端執行邏輯
遠端負載機首先啟動agent程式,等待控制機連線
控制機連線上遠端負載機
控制機發送指令(指令碼及啟動命令)啟動執行緒
負載機執行指令碼,回傳狀態(包括測試結果)
控制機收集結果並顯示