Jmeter分布式部署
在使用Jmeter進行接口的性能測試時肯骇,由于Jmeter 是JAVA應用榆纽,對于CPU和內(nèi)存的消耗比較大壁顶,所以掀亥,當需要模擬數(shù)以萬計的并發(fā)用戶時坦冠,使用單臺機器模擬所有的并發(fā)用戶就有些力不從心哈扮,甚至會引起JAVA內(nèi)存溢出錯誤捆探。為了讓jmeter工具提供更大的負載能力守伸,這時可以使用Jmeter提供的分布式功能來啟動多臺電腦來分壓測試琢锋。
一辕漂、Jmeter分布式執(zhí)行原理:
1、Jmeter分布式測試時吴超,選擇其中一臺作為控制機(Controller)钉嘹,其它機器做為執(zhí)行機(Slave)。
2烛芬、執(zhí)行時隧期,Controller會把腳本發(fā)送到每臺Slave上飒责,Slave拿到腳本后開始執(zhí)行,Slave執(zhí)行時不需要啟動Jmeter仆潮,只需要把jmeter-server.bat文件打開宏蛉,它應該是通過命令行模式來執(zhí)行的。
3性置、執(zhí)行后拾并,Slave會把結(jié)果回傳給Controller,Controller會收集所有Slave的信息并匯總鹏浅。
原理圖:
二嗅义、執(zhí)行機(Slave)配置:
1、執(zhí)行機機上需要安裝JDK隐砸、Jmeter之碗,并且配置好環(huán)境變量。
2季希、打開“運行”褪那,輸入"cmd",打開運行面板,輸入“ipconfig”式塌,找到IP地址博敬,例如是:192.168.8.149
3、打開Jmeter/bin/jmeter.properties峰尝,找到”remote_hosts=127.0.0.1”,把這一行修改為”remote_hosts=192.168.8.149:1099偏窝,1099是端口號,可以隨意自定義武学。
[if !supportLists]4祭往、[endif]打開jmeter-server.bat文件,就設(shè)置完成了劳淆,等待控制機(Controller)啟動链沼。
三、控制機(Controller)配置:
1沛鸵、控制機上需要安裝JDK括勺、Jmeter,并且配置好環(huán)境變量曲掰。
2疾捍、打開“運行”,輸入"cmd",打開運行面板栏妖,輸入“ipconfig”乱豆,找到IP地址,例如是:192.168.8.174
3吊趾、打開Jmeter/bin/jmeter.properties宛裕,找到”remote_hosts=127.0.0.1”,把這一行修改為”remote_hosts=192.168.8.149:1099,192.168.8.174:1099瑟啃,1099是端口號,可以隨意自定義揩尸。如果有多臺代理機蛹屿,這里需要把所有的代理機的IP地址和端口號都加入進來。
4岩榆、配置完了啟動jmeter-server.bat错负,但是會報錯,提醒要加密了勇边,具體操作也很簡單犹撒,雙擊create-rmi-keystore.bat,根據(jù)提示一直填下去粒褒,遇到y(tǒng)es與No就直接填:Y? 然后回車就ok了识颊。
要注意:生成的rmi_keystore.jks復制到每一臺執(zhí)行物理機的jmeter bin目錄下去
然后控制機的再啟動 jmeter-server.bat
四、開始添加線程組和請求來運行查看結(jié)果:
1怀浆、打開jmeter.bat文件谊囚,添加線程組怕享,編輯線程數(shù)执赡,這里設(shè)置100個線程數(shù),循環(huán)2次函筋,就是一臺機器發(fā)送100*2=200個請求沙合。
2、點擊運行跌帐,可以選擇遠程啟動或者遠程全部啟動首懈,如果是點擊遠程啟動,可以選擇任意一臺電腦來運行谨敛,如果是點擊遠程全部啟動就會運行控制機和所有的代理機究履。
3、這里以點擊遠程全部啟動為例脸狸。運行結(jié)束后最仑,查看聚合報告,每臺電腦設(shè)置的線程數(shù)為200炊甲,這里一共是兩臺電腦泥彤,所以是200*2=400個線程數(shù)。
五卿啡、常見問題的解決方法
問題1:jmeter分布式壓力機(多網(wǎng)卡)----處理Connection refused
1吟吝,問題現(xiàn)象:
性能測試時,使用的服務器安裝了虛擬機颈娜,導致在使用jmeter進行分布式測試的時候總是連接失敗剑逃。
2浙宜,原因分析:
Jmeter采用了rmi進行遠程調(diào)用,在開啟RMI服務時蛹磺,如果服務端有多個網(wǎng)卡梆奈,它只是使用其中任意一個網(wǎng)卡,默認情況下称开,導致jmeter的controller機器和agent機器不在同一個網(wǎng)段內(nèi)亩钟,無法互通,導致失敗
3鳖轰,解決方法:
我們要在多網(wǎng)卡的服務器上開啟RMI服務的話必須指定IP清酥,使他們能夠在同一個網(wǎng)段內(nèi)。
需要以下幾步:
a蕴侣、 修改執(zhí)行機(Slave)焰轻,指定執(zhí)行機的IP
修改jmeter-server文件
修改RMI_HOST_DEF=-Djava.rmi.server.hostname=本機IP
b、? 修改控制機(Controller)昆雀,指定控制機的IP
修改jmeter.bat文件
新增set rmi_host=-Djava.rmi.server.hostname=本機IP
修改set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %DDRAW% %rmi_host%
修改完成后,重新啟動jmeter
問題2:遠程服務器執(zhí)行腳本后辱志,響應數(shù)據(jù)為空
原因:jmeter客戶端默認是統(tǒng)計模式,不顯示響應數(shù)據(jù)狞膘,減少開銷揩懒。
想查看響應數(shù)據(jù),打開bin/jmeter.properties文件,去掉mode=Standard前的#挽封。
問題3:重新打開保存的查看結(jié)果樹已球,請求和響應數(shù)據(jù)為空?
解決方法:在http請求的高級設(shè)置中選擇“從HTML文件獲取所有內(nèi)容資源”辅愿,將查看結(jié)果數(shù)據(jù)保存為html文件
點擊可下載Word文檔:Jmeter分布式部署操作文檔